@laravel_pro

Страница 1612 из 2014
В
19.07.2018
06:28:08
Спасибо!

ExPandable
19.07.2018
06:30:57
подскажите плиз. есть релейшн у продукта, допустим characteristics() который возвращает hasOne() запрос достаточно тяжелый, и я хочу попытаться его кешировать, но как я понял релейшны нельзя кешировать. как тогда быть?

Google
Илья
19.07.2018
06:32:55
hasOne тяжёлый?

ExPandable
19.07.2018
06:33:20
их очень много

например, на главной странице около 80 запросов

Евгений
19.07.2018
06:34:15
With юзай

ExPandable
19.07.2018
06:34:20
ну может я из пушки по воробьям конечно

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

Vitaliy
19.07.2018
06:36:25
Так кешируй не запрос а сам результат. Сериализуй коллекции которые вернулись и в редис с каким то таймаутом

ExPandable
19.07.2018
06:36:39
не, редис тут оверхед

Vitaliy
19.07.2018
06:36:59
Та хоть тот же мускуль юзай

Я образно

Александр
19.07.2018
06:37:07
Жадно не грузит?

ExPandable
19.07.2018
06:37:26
Жадно не грузит?
если ты про return $product->characteristics

то вот так вот оно и грузит

Google
Александр
19.07.2018
06:37:53
Дану

Это в цикле ?

ExPandable
19.07.2018
06:38:14
нет

вас смущает наверное

что characteristicS возвращает hasOne

Vitaliy
19.07.2018
06:38:40
Да кинь ты уже на пастбин свой хезван

Александр
19.07.2018
06:38:42
Не может это n+1 делать

♔ⓜⓐⓡⓓⓞⓝ♔
19.07.2018
06:39:41
Доброе день

ExPandable
19.07.2018
06:39:59
Да кинь ты уже на пастбин свой хезван
https://gist.github.com/PandaTheSlayer/00bf7761de9c5408aff0e1ae943fdc2d

Не может это n+1 делать
возвращается 1 строка

с колонками характеристик

Александр
19.07.2018
06:40:44
Хаха! Отжег)

ExPandable
19.07.2018
06:40:55
ну мне показалось это неплохой идеей...

Vitaliy
19.07.2018
06:41:17
Александр
19.07.2018
06:41:45
Вот характеристики когда выводятся, запросы и дергаются видимо

Aibek
19.07.2018
06:42:12
одно дело просто написать релейшн в модели, другое дело использовать его Product::query()->with('characteristics')->get();

ExPandable
19.07.2018
06:42:13
Вот характеристики когда выводятся, запросы и дергаются видимо
во вью приходит 1 модель с характеристиками

Александр
19.07.2018
06:42:29
❗️
Да какой with? Он не может понять, какой релейшн делает запросы)

Vitaliy
19.07.2018
06:43:06
Он сам написал же какой и скинул его пастбин

Google
Александр
19.07.2018
06:43:36
Потому что то, что он написал, делает 1 запрос

На пастбин лучше бы вставил сам контроллер

Vitaliy
19.07.2018
06:44:20
Он модели без характеристик выбирает, ему виз в выборке нужен оО

Александр
19.07.2018
06:45:22
если ты про return $product->characteristics
Вот как он релейшн юзает, ты видишь, что нужно жадно подгрузить? Я нет)

Надо сначала понять, что у него там в цикле

Aibek
19.07.2018
06:46:07
скинь свой контроллер и view

Vitaliy
19.07.2018
06:46:36
Да, вижу В выборке ->with(['characteristics'])

Ну

ExPandable
19.07.2018
06:48:35
не, я наврал

погодите

во вьюшке я просто проверяю наличие колонки и вывожу ее в случае чего

Vitaliy
19.07.2018
06:49:20
У тебя ещё и в характеристиках есть релейшины?

ExPandable
19.07.2018
06:49:22
нет

откуда

я же сказал изначально

еще и где то с недели полторы назад тот же вопрос мне задавали

Vitaliy
19.07.2018
06:49:46
Скинь запрос который повторяется

Александр
19.07.2018
06:49:47
Закомменти код во вьюшке - будет запрос в цикле?

ExPandable
19.07.2018
06:49:57
Скинь запрос который повторяется
у меня нет запроса который повторяется

Александр
19.07.2018
06:50:01
Может у него мутатор на геттер с запросом вообще и при сериализации он в каждой характеристике мутирует атрибут с запросом

Google
Александр
19.07.2018
06:50:17
Фух

ExPandable
19.07.2018
06:50:20
в общем, ладно, сори что отнял ваше время

вы меня не поняли просто)

Vitaliy
19.07.2018
06:50:30
Оо

ну может я из пушки по воробьям конечно

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

Admin
ERROR: S client not available

ExPandable
19.07.2018
06:50:49
у меня там 80 товаров на главной

каждый тянет ОДИН запрос в базу

следовательно, я хочу чтобы характеристики товара были сразу в кеше

я вас сам чет запутал даже

Александр
19.07.2018
06:53:05
Загрузи все товары и у них жадно характеристики, проблем то

ExPandable
19.07.2018
06:54:59
а, ебаный, я понял откуда там вообще запрос в базу то идет

спасибо еще раз)

а, еще вопрос такой у меня. его вроде задавал уже, но так ответа и не нашел. запрос есть на получение топРейтед(откуда я собственно и начал копать в оптимизацию) $topRated = Product::with('characteristics')->whereHas('characteristics', function($q){ $q->where('os', 'Windows')->orderBy('rating'); })->limit(5)->get(); where запрос работает, orderBy игнорируется :( orderBy если что флоат

Nik
19.07.2018
07:21:00
ты его на саб кверю делаешь

ExPandable
19.07.2018
07:22:16
$topRated = Product::with('characteristics')->whereHas('characteristics', function($q){ $q->where('os', 'Windows'); })->orderBy('rating')->limit(5)->get(); $topRated = Product::with('characteristics')->whereHas('characteristics', function($q){ $q->where('os', 'Windows'); })->orderBy('product_characteristics.rating')->limit(5)->get(); оба таких запроса тоже не работают(

Google
ExPandable
19.07.2018
07:22:43
не может вообще понять что за колонка rating

даже при полном указании откуда она берется

Adel
19.07.2018
07:26:47
а разве не надо тебе ее джойнить?

Nik
19.07.2018
07:26:50
а где она берется?

Adel
19.07.2018
07:26:51
а не whereHas?

ExPandable
19.07.2018
07:27:04
а разве не надо тебе ее джойнить?
у меня есть решение через джойн

я просто хочу как то более элегантно

Adel
19.07.2018
07:27:31
ты помоему не понимаешь что такое whereHas :)

Nik
19.07.2018
07:27:37
whereHas не умеет сортировки по своей природе. открой сиквел запрос - поймешь почему

именно

ExPandable
19.07.2018
07:27:52
ты помоему не понимаешь что такое whereHas :)
понимаю, оно же по where работает

да я понимаю, что сортировка не будет в сабквери работать

Adel
19.07.2018
07:28:07
но там подзапросом

ExPandable
19.07.2018
07:28:12
но как мне получившуюся коллекцию отсортировать?

нет :)
как это нет?

Nik
19.07.2018
07:28:22
открой запрос

Adel
19.07.2018
07:28:26
и в этом подзапросе, который has - там сортировка не важна

Nik
19.07.2018
07:28:28
там exists

Adel
19.07.2018
07:28:36
и колонка rating оттуда никак в главный запрос не попадет

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