Laravel: возможно ли применить -> where () над hasMany ()? - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть таблица notifications, в которой есть столбец status.Статус может быть, среди прочего, «ack» и «noack».Итак, уведомления принадлежат пользователю.Если я хочу использовать ORM для просмотра уведомлений пользователя, я бы использовал hasMany() в модели User, например:

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');
}

Но это приводит к пустой коллекции.

Как это можно сделать?

1 Ответ

4 голосов
/ 10 апреля 2019

Вы можете сделать что-то подобное,

Вы создаете новую функцию в той же модели и вызываете этот основной метод с условием получения noack уведомлений.

public function noack_notifications() {
    return $this->notificaciones()->where('status','=', 'noack');
}

Когда вы вызываете этот метод из контроллера с помощью find.

$user =  User::find($id);
dd($user->noack_notifications()->get());

Это должно решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...