
D'
09.09.2016
16:52:28
остальное тоже пиздец

Евгений
09.09.2016
16:52:30
ладно, щас мелкого укладывать буду, потом напишу тебе
или завтра

Александр
09.09.2016
16:58:58
D, тебе в этом чате почасовку платят за онлайн и ответы на вопросы?)

Google

Евгений
09.09.2016
17:13:00
D, сvотри, наверно правильно когда я делаю запрос и получаю сериал с эпизодами, сразу в этом же запросе джоином или как там еще получить у каждого эпизода статус просмотренности данным юзером, то есть передать айдишник юзера туда
@Denormalization так?
чтобы в зависимости от статуса уже во вьюхе показывать нудную хрень

D'
09.09.2016
17:19:07

Евгений
09.09.2016
17:19:48
блин, эти джоины... никогда не умел их готовить

D'
09.09.2016
17:20:15
Смотри, у тебя есть таблица с user_id, episode_id так?
Укажи просто hasMany связь в модели эпизода

Евгений
09.09.2016
17:21:00
public function users()
{
return $this->belongsToMany('App\Models\User', 'episode_user', 'episode_id', 'user_id');
}
это у эпизода юзеры которые его посмотрели

D'
09.09.2016
17:21:23
хм
можно и так
только теперь все равно надо фильтровать

Google

Евгений
09.09.2016
17:22:20
$serial = Serial::where('slug', $slug)->with(['episodes'])->firstOrFail();

D'
09.09.2016
17:22:35
и episodes.users

Евгений
09.09.2016
17:22:40
вот так я получаю сериал с эпизодами, и надо туда же к каждому эпизоду статус присобачить
а как это поможет с выводом?

D'
09.09.2016
17:23:11
Ну тебе же надо выяснить смотрел ли юзер

Евгений
09.09.2016
17:23:17
да

D'
09.09.2016
17:23:22
Нужно будет дергать таблицу все равно

Евгений
09.09.2016
17:23:39
а если так
берем отдельной переменной сериал, отдельной его серии, два запроса. И у серий мы делаем джоин просмотренных текущим юзером
я просто не знаю как это всё пихнуть в один запрос у сериала
а у эпизодов проще кажется

D'
09.09.2016
17:27:02
$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;
}
Добавь метод в модель эпизодов
или там через find() можно
не суть
Но мне не нравится оверхед на выборку всех юзеров

Евгений
09.09.2016
17:28:10
о, ща, пришла идея

D'
09.09.2016
17:32:13
Вообще можно сделать без заеба

Евгений
09.09.2016
17:32:26
$episode->users->contains('id', Auth::id())
вот проверяем у серии смотрел ли её юзер

Google

Евгений
09.09.2016
17:32:42
во вьюхе

D'
09.09.2016
17:32:44
Не, это хреновая идея
Там все равно все юзеры выбираются
А прикинь там будет 1000 юзеров
И они каждый раз будут дергаться

Евгений
09.09.2016
17:33:04
ну квери билдером по аналогии сделать
я просто квери билдером не умею нормально

D'
09.09.2016
17:34:23
$serial = Serial::where('slug', $slug)->with(['episodes'])->firstOrFail();
$watchedEpisodesByUser = Auth::user()->episodes->lists('id')->all();
Во вьюхе:
{{ in_array($episode->id, $watchedEpisodesByUser) ? 'watched' : 'not watched' }}

Евгений
09.09.2016
17:34:46
ну блин, я примерно так и делал

D'
09.09.2016
17:35:04
Ну так и делай )

Евгений
09.09.2016
17:35:11
а джоином не надо?
чтоб сразу у эпизода статус был смотрено или нет

D'
09.09.2016
17:35:28
Чем тебе джоин поможет? Тебе же надо выяснить смотрел ли юзер этот эпизод

Евгений
09.09.2016
17:35:29
в коллекции
ну

D'
09.09.2016
17:35:33
А не выбрать тоьлко просмотренные

Евгений
09.09.2016
17:35:38
так не
ну не джоин
я хз как это делается

D'
09.09.2016
17:35:59
Там вручную надо будет запрос писать

Google

D'
09.09.2016
17:36:04
С подзапросом
Ебатная не стоящая свеч.

Евгений
09.09.2016
17:36:12
ладно, тогда так оставлю
бля, но вот еще например где у меня лишние запросы идут

D'
09.09.2016
17:36:51
А тут где у тебя лишние запросы?

Евгений
09.09.2016
17:36:59
тут нет

stgalkin
09.09.2016
17:37:06
Так все связи идут отдельным запросом

Евгений
09.09.2016
17:37:06
изначально делал криво и было но щас так

D'
09.09.2016
17:37:07
В моем примере как раз у тебя 1 запрос на эпизоды, 1 на просмотренные

Евгений
09.09.2016
17:37:43
еще у меня короче у каждой серии есть статус, вышла она уже или нет

Admin
ERROR: S client not available

Евгений
09.09.2016
17:38:03
и вот на вьюхе я проверяю, если количество вышедших больше 0 то... и вот тут запрос
и так же список ожидаемых серий
тоже запрос если больше 0 то...

D'
09.09.2016
17:39:10
А в чем проблема?

Евгений
09.09.2016
17:39:21
много запросов

D'
09.09.2016
17:39:29
Много это сколько?
У тебя n+1 проблема или просто "много" запросов?

Евгений
09.09.2016
17:39:49
ща

Александр
09.09.2016
18:40:26
парни почему может умирать скрипт на валидации? http://joxi.ru/DmBxpVJuNeDo8A?d=1

Google

Александр
09.09.2016
18:40:44
не выдает ни ошибок, ни исключений
$request я программно создал http://joxi.ru/8AnBv4zuqLevvA?d=1

D'
09.09.2016
18:47:11
validate не выдает ошибок
он редиректит сразу
либо json отдает

Александр
09.09.2016
18:47:57
а умирать он может по каким причинам?

D'
09.09.2016
18:48:06
что значит умирать?

Александр
09.09.2016
18:48:14
http://joxi.ru/5mdQ8lzuvEooV2?d=1
скрипт стопорится на валидации

D'
09.09.2016
18:48:58
ну у тебя там что-то с редиректами
там походу циклический редирект выходит
validate() делает редирект если валидация фейлится
похоже он у тебя опять повторяет запрос

Александр
09.09.2016
18:49:50
понял

D'
09.09.2016
18:50:03
Сделай \Log::info("1"); перед $this->validate

Александр
09.09.2016
18:50:06
я для теста редирект запихнул в index

D'
09.09.2016
18:50:08
и посмотри в логах сколько раз будет

Александр
09.09.2016
18:50:13
и походу он обратно в индекс улетает
точнее валидацию в индекс

D'
09.09.2016
18:50:41
ну он обратно редиректит
в этом и трабла

Александр
09.09.2016
18:51:27
отлично, thx
что-то не пойму почему не валидируется этот код:
http://joxi.ru/DmBxpVJuNeDaEA?d=1