@laravel_pro

Страница 77 из 2014
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 так?

чтобы в зависимости от статуса уже во вьюхе показывать нудную хрень

Евгений
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

Страница 77 из 2014