who are you
а вообще это сложно к пониманию, чтобы взаимосвязь таблиц устанавливать где то в модели а не в запросе
Амаль
Да ничего сложного вроде если посидеть
who are you
всю жизнь делал это в запросах непосредственно а тут надо методы отдельные еще делать
Амаль
Можно и без прокладывания связи делать джоины
Амаль
всю жизнь делал это в запросах непосредственно а тут надо методы отдельные еще делать
Просто так ты пишешь на уровне php не перемешивая sql и php код
Амаль
У тебя не путаются запросы с переменными внутри вызовов функций... Старый добрый mysql_query
who are you
тогда по логике и html с php не надо смешивать)
Aleksandr
with и joinWith выбирают данные одинаковым количеством запросов, только joinWith в запрос добавляет join со связанными таблицами
Aleksandr
т.к. это может влиять на конечный результат
andrew
http://www.yiiframework.com/doc-2.0/yii-db-query.html#join%28%29-detail
who are you
Саш, вот первый метод если смотреть, если его использовать, нужно прописывать в модель связь (hasOne), ведь вроде бы запрос построен как старые времена с явным указанием какую табу джоинить?
who are you
http://shot.hsdn.org/5jmUaVAI
andrew
1 способ это бред какой то
andrew
сначала делается join а потом еще и IN запрос
who are you
сначала делается join а потом еще и IN запрос
без with будет куча запросов типа SELECT * FROM price_features WHERE id=23
Aleksandr
AR - это о моделях. не надо на AR пытаться работать понятиями Query, в частности выбирать отдельные колонки
andrew
без with будет куча запросов типа SELECT * FROM price_features WHERE id=23
там сначала забираются данные через join, судя по всему лишние, а потом делается нежадный запрос через IN
andrew
не вижу смысла в этом
andrew
joinWith работает как надо
andrew
ваш первый способ бессмысленен
Aleksandr
joinWith работает как надо
работает также как и with, кроме включения в запрос join, который не влияет на кол-во запросов
andrew
разе joinWith не забирает данные жадным запросом?
Aleksandr
нет
andrew
О_о
Aleksandr
и with и joinWith - это вариации жадного запроса
Aleksandr
но не такого жадного как в yii1
andrew
то есть joinWith все равно отправляет IN запрос с массивом айдишников??
Aleksandr
да
andrew
вот так новость, надо это проверить
who are you
отправляет )
who are you
сперва делает
who are you
http://shot.hsdn.org/ue4eIYjV
who are you
потом еще раз
who are you
http://shot.hsdn.org/omTOq1bP
Aleksandr
вот так новость, надо это проверить
теперь жадные запросы так работают - by design. Чтобы сохранить чистоту кода и не делать парсинга грязных данных
andrew
а с какой версии?
Aleksandr
с 2
andrew
хм
Aleksandr
вау, 2.0 https://framework.zend.com/blog/2017-03-07-expressive-2.html
Aleksandr
вот это бы я всем посоветовал пощупать. конфетка
andrew
а что лучше изучать после юи, зенд или симфони?
andrew
я пока остановился на симфони
Aleksandr
я думаю да, симфони
Aleksandr
но экпрессив - это не зенд, а микрофреймворк без зенда)
Амаль
С phpixie кто нибудь работал?
Aleksandr
С phpixie кто нибудь работал?
бесит меня этот чувак-накрутчик. слишком агрессивно продвигает, а в код глянешь - плакать хочется
andrew
я слышал подкаст с ним :D
andrew
да, отправляется 2 запроса, даже если использовать joinWith O_o
andrew
тогда вообще не вижу смысла в joinWith
Aleksandr
тогда вообще не вижу смысла в joinWith
результат может быть другой
andrew
в смысле результат?
Aleksandr
то есть это надо помнить, выбирая между with и joinWith
who are you
тогда вообще не вижу смысла в joinWith
разьве что сократить код
Aleksandr
ну select * from table и select * from table left join .... может выдасть разное кол-во строк
Aleksandr
щас уже кейс не вспомню, но три года назад мотивировка такого подхода такова была
andrew
ну то есть, как я понял, joinWith не используется для заполнения связанных данных, используется чтобы автоматом внешние ключи подставить из связи?
who are you
а вот с $query->createCommand() проблема, оно хоть и выводит массив чистый но пагинацию уже не прикрутить стандартным образом
Aleksandr
эм, ну наверное
andrew
установить
who are you
потому что пагинацию юзает объекты а тут массив и стандартный способ не катит уже
andrew
можно ручками лимит и оффсет подставлять в запрос
Aleksandr
https://github.com/yiisoft/yii2/blob/495553616dc41b9a5db141931388d9502d19eb13/docs/guide/output-pagination.md
who are you
☺️ блин, откуда вы все так находите
who are you
мне надо пол дня чтобы в этом разобраться
who are you
а у вас это минуты
Aleksandr
☺️ блин, откуда вы все так находите
два часа на прочтение всей доки. повторять несколько раз через неделю.
andrew
+
andrew
в документации на самом деле много чего можно найти
andrew
полезного
Aleksandr
прочтение документации тебе подкинет а) интересные кейсы, о которых ты не знал либо не понимал при предыдущем прочтении б) закрепит материал, который ты уже ручками реверсинженирил в процессе работы
who are you
я кстати принтил объект отправляемый во вьювер и там небыло видно другой обхект который надо получать так - $item->priceFeatures->area внутри форыча
who are you
в этом главная моя проблема была даже не думал что там спрятан еще объект другой таблицы
who are you
хотя я вру
who are you
он появился
who are you
😔