@jazzus

Можно ли исключить find для WithCount?

Проверяю количество через withcount. Сделал в модели

public function hasModel($model)
  {
    if ($this->withCount($model)->find($this->id)->{$model.'_count'}>0) return true;
    return false;
  }


И чувствую, что можно обойтись без find($this->id). Мы ведь уже обращаемся к найденому объекту. Но без find идет ошибка.

Можно сделать проще с коунтом:
public function hasModel($model)
    {
      if ($this->$model()->count()>0) return true;
      return false;
    }


но насколько я знаю из документации withcount -это более оптимизированный способ подсчитать количество. Или в данном случае разницы нет?
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
Надо вызвать не модель, а функцию отношения
public function hasModel($relation)
{
  return $this->$relation()->count()>0;
}
public function comments()
{
    return $this->hasMany('App\Comment');
}
...
$this->hasModel('comments')

но вообще лучше использовать has

public function comments()
{
    return $this->hasMany('App\Comment');
}
...
$this->has('comments')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы