Laravel: можно ли применить ->where() вместо hasMany()?

У меня есть эта таблица 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');
}

Но это создает пустую коллекцию.

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

Нет причин, по которым этот код не работал бы. Это весь код и как это используется на практике?

apokryfos 10.04.2019 15:45
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

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

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

Эта функция вернет запрос, должен ли он включать ->get() в конце для получения коллекции элементов?

namelivia 10.04.2019 15:39

Да в модели пользователя, и я обновил свой ответ. Один раз проверь сейчас @namelivia

Rahul 10.04.2019 15:40

Другие вопросы по теме