Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Всем привет!
Нужна подсказка опытных.
Есть две модели Users и Alerts. Они связаны между собой пивотной таблицей alert_user.
Для каждого юзера достаю нужные алерты через
$alerts = User::find($user->id)->alerts;
У меня в таблице alerts есть поле viewed с булиновским значением. Как мнее достать для юзера алерты, которые со значением в таблице viewed == false?
Через
$alerts = User::find($user->id)->alerts;
$alerts = $alerts->where('viewed', false);
Не в сети
>>$alerts = User::find($user->id)->alerts;
Если есть уже инстанс юзера $user
Зачем еще раз его находить?
Попробуй
$alerts = $user->alerts()->where('viewed', false)->get();
Не в сети
А вообще в отношениях что-то явно не так.
>>Есть две модели Users и Alerts. Они связаны между собой пивотной таблицей alert_user.
Это значит отношение м2м
Те один алерт может относиться ко многим пользователям? Тогда поле viewed на самой модели Alert нерелевантно. Надо делать колонку viewed на связующей таблице alert_user
Изменено VitalN (28.04.2016 13:52:30)
Не в сети
А вообще в отношениях что-то явно не так.
Это значит отношение м2м
Те один алерт может относиться ко многим пользователям? Тогда поле viewed на самой модели Alert нерелевантно. Надо делать колонку viewed на связующей таблице alert_user
Именно, алерт относится ко многим юзерам (многие юзеры имеют алерт). В обеих талицах пока есть поле viewed.
Бьет такую ошибку:
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'viewed' in where clause is ambiguous (SQL: select `alerts`.*, `alert_user`.`user_id` as `pivot_user_id`, `alert_user`.`alert_id` as `pivot_alert_id` from `alerts` inner join `alert_user` on `alerts`.`id` = `alert_user`.`alert_id` where `alert_user`.`user_id` = 2 and `viewed` = 0)
Изменено Arat (28.04.2016 13:56:43)
Не в сети
Так тебе условие по viewed надо на пивотную таблицу или alert ?
Не в сети
Не в сети
тогда
$alerts = $user->alerts()->wherePivot('viewed', false)->get();
Не в сети
Не в сети
Не в сети
Как раз перевожу эту доку https://laravel.com/docs/5.2/eloquent-r … ny-to-many для сообщества
---
По умолчанию, в объекте `pivot` будут присутствовать только ключи моделей. Если ваша связующая таблица содержит дополнительные атрибуты, их необходимо перечислить при описании отношения:
return $this->belongsToMany('App\Role')->withPivot('column1', 'column2');
Думаю, пока суть да дело надо будет в виде статьи выложить у себя )
Не в сети
Не в сети
Не в сети
А сделай дамп $alerts во вью, он там что вообще?
Ты его передать туда не забыл? )
Не в сети
Во вьюхе дампится аж бегом. Оно там массив объектов самих алертов. Конечно, я передал алерты туда.
Не в сети
Ну у массива не может быть конечно метода links ()
Код точно так выглядит как указал?
$alerts = $user->alerts()->wherePivot('viewed', true)->paginate(10);
Запости весь метод контродллера
Не в сети
Как раз перевожу эту доку https://laravel.com/docs/5.2/eloquent-r … ny-to-many для сообщества
---
По умолчанию, в объекте `pivot` будут присутствовать только ключи моделей. Если ваша связующая таблица содержит дополнительные атрибуты, их необходимо перечислить при описании отношения:return $this->belongsToMany('App\Role')->withPivot('column1', 'column2');
Думаю, пока суть да дело надо будет в виде статьи выложить у себя )
Думаю будет очень полезно еще добавить в доки кроме оригинального перевода, еще информацию как применить мутаторы к пивот таблице. Вчера столкнулся с этим, долго помучился, в итоге все доволи просто: наследуете пивот таблицу от класса Pivot и переопределяете в обращающейся к пивот таблице метод newPivot, возвращающий новый объект модели пивот. (надеюсь понятно )
WebDev,
Можете в виде коммента добавить https://laravel-news.ru/blog/tutorials/ … t-relation
Информация полезная!
Не в сети
Не в сети
Таки не работает постраничка. А может какой-то сторонний пакет для ларавела давать такую проблему?
Не в сети
Не в сети
попробуй
$alerts = $user->alerts()->wherePivot('viewed', true)->sortByDesc('created_at')->paginate(10);
Не в сети
Не в сети
Запрос посмотри какой получается
Не в сети
Страницы 1