@jazzus

Как автоматизировать проверки существования записи в отношениях?

Ларавель. Сервер Ubuntu. Модель User. Связана со многими моделями типа так
public function files()
{
    return $this->hasMany('App\Models\File', 'user_id', 'id');
}

Всякие отношения. Типа. Многие ко многим, ко многим через, имеет один и т.д.

Хочу автоматизировать проверку наличия объектов для связанных моделей. Делаю.
public function hasModel($model)
{
   return count($this->$model) > 0;
}

Проверки такие
if ($user->hasModel('files')) {
   ..
}

На сервер-продакшене прилетает ошибка.
count(): Parameter must be an array or an object that implements Countable

При этом на локалхосте ошибки нет.

Накидал такие варианты
public function hasModel($model)
{
   return $this->$model()->exists();
   if (!empty($this->$model()->first())) {
   return true;
   } return false;
   return $this->$model()->first()->count() > 0;
   return count($this->$model) > 0;
}

Каким способом лучше проверять наличие записи в отношениях? Стоит ли вообще пытаться одним методом проверять для всех отношений или для каждого отношения прописывать свою отдельную проверку и, тогда какую?
Типа
public function hasFile()
{
  // Что вы здесь обычно пишете?
}
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 1
@jazzus Автор вопроса
Решение от Алексей Уколов,
Проверки для отношений:
для hasOne $this->file для hasMany $this->files->isEmpty()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы