У меня есть эта таблица notifications
, в которой есть столбец status
. Статус может быть, среди прочего, «подтверждено» и «не подтверждено». Итак, уведомления принадлежат пользователю. Если я хочу использовать ORM для просмотра уведомлений пользователя, я бы использовал hasMany()
в модели пользователя, например:
public function notificaciones()
{
return $this->hasMany('App\Notification', 'dest_id', 'id');
}
И это прекрасно работает. (Dest_id означает, для кого предназначено уведомление, есть еще один origin_id, который сообщает, кто вызвал уведомление, в любом случае, это работает)
Теперь я хочу видеть только неподтвержденные (noack) уведомления, о которых я думал:
public function notificaciones()
{
return $this->hasMany('App\Notificacion', 'dest_id', 'id')
->where('status', 'noack');
}
Но это создает пустую коллекцию.
Как это можно сделать?
Вы можете сделать что-то подобное,
Вы создаете новую функцию в той же модели и вызываете этот основной метод с условием получения noack
уведомлений.
public function noack_notifications() {
return $this->notificaciones()->where('status','=', 'noack');
}
Когда вы вызываете этот метод из контроллера с помощью find.
$user = User::find($id);
dd($user->noack_notifications()->get());
Это должно решить вашу проблему.
Эта функция вернет запрос, должен ли он включать ->get()
в конце для получения коллекции элементов?
Да в модели пользователя, и я обновил свой ответ. Один раз проверь сейчас @namelivia
Нет причин, по которым этот код не работал бы. Это весь код и как это используется на практике?