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