Евгений
Не помню как называется
Anonymous
Ну бери $serial->episodes()->with('watched')->get();
Anonymous
В итоге оно выборку сделает сразу
Anonymous
И не будешь потом каждый раз дергать бд
Евгений
Ок, попробую
Евгений
Ну да
Anonymous
Или еще раньше можно
Евгений
Логично же
Anonymous
Когда seail выбираешь
Anonymous
Serial::with('episodes.watch')->where('id', 1)->first();
Евгений
Можно
Евгений
Кул
Евгений
А смотри
Евгений
В вьюхе как
Евгений
В блейде
Евгений
А бля
Anonymous
А можно вообще в модели эпизодов прописать $with = ['watched'] и он сам будет его дергать каждый раз )
Евгений
Все понятно
Евгений
Каждый раз не надо
Евгений
Хотя...
Евгений
А то запросов очень много как-то у меня вышло😄
Anonymous
Ток чет я не пойму как ты определяешь что юзер посмотрел
Anonymous
Покажи этот момент
Евгений
У компа буду гляну
Евгений
public function isSeen($user_id) { $check = false; $user = User::findOrFail($user_id); if (Auth::check() && $user->episodes()->where('episode_id', $this->id)->count() > 0) { $check = true; } return $check; }
Евгений
вот, поугарай
Евгений
это у эпизода метод
Anonymous
эм
Anonymous
эт пиздец
Евгений
=)
Евгений
я не сомневался
Anonymous
Auth::check() это зачем?
Евгений
на всякий случай
Евгений
или это доп запрос?
Anonymous
На какой случай?)
Anonymous
Ты же юзера уже нашел
Евгений
убрал
Евгений
а остальное?
Anonymous
остальное тоже пиздец
Евгений
ладно, щас мелкого укладывать буду, потом напишу тебе
Евгений
или завтра
Александр
D, тебе в этом чате почасовку платят за онлайн и ответы на вопросы?)
Евгений
D, сvотри, наверно правильно когда я делаю запрос и получаю сериал с эпизодами, сразу в этом же запросе джоином или как там еще получить у каждого эпизода статус просмотренности данным юзером, то есть передать айдишник юзера туда
Евгений
@Denormalization так?
Евгений
чтобы в зависимости от статуса уже во вьюхе показывать нудную хрень
Евгений
блин, эти джоины... никогда не умел их готовить
Anonymous
Смотри, у тебя есть таблица с user_id, episode_id так?
Anonymous
Укажи просто hasMany связь в модели эпизода
Евгений
public function users() { return $this->belongsToMany('App\Models\User', 'episode_user', 'episode_id', 'user_id'); }
Евгений
это у эпизода юзеры которые его посмотрели
Anonymous
хм
Anonymous
можно и так
Anonymous
только теперь все равно надо фильтровать
Евгений
$serial = Serial::where('slug', $slug)->with(['episodes'])->firstOrFail();
Anonymous
и episodes.users
Евгений
вот так я получаю сериал с эпизодами, и надо туда же к каждому эпизоду статус присобачить
Евгений
а как это поможет с выводом?
Anonymous
Ну тебе же надо выяснить смотрел ли юзер
Евгений
да
Anonymous
Нужно будет дергать таблицу все равно
Евгений
а если так
Евгений
берем отдельной переменной сериал, отдельной его серии, два запроса. И у серий мы делаем джоин просмотренных текущим юзером
Евгений
я просто не знаю как это всё пихнуть в один запрос у сериала
Евгений
а у эпизодов проще кажется
Anonymous
$serial = Serial::where('slug', $slug)->with(['episodes', 'episodes.users'])->firstOrFail(); public function isWatchedBy($user_id) { return $this->users->where('user_id', $user_id)->count() > 0; }
Anonymous
Добавь метод в модель эпизодов
Anonymous
или там через find() можно
Anonymous
не суть
Anonymous
Но мне не нравится оверхед на выборку всех юзеров
Евгений
о, ща, пришла идея
Anonymous
Вообще можно сделать без заеба
Евгений
$episode->users->contains('id', Auth::id())
Евгений
вот проверяем у серии смотрел ли её юзер
Евгений
во вьюхе
Anonymous
Не, это хреновая идея
Anonymous
Там все равно все юзеры выбираются
Anonymous
А прикинь там будет 1000 юзеров
Anonymous
И они каждый раз будут дергаться