@yii2ru

Страница 93 из 1721
andrew
07.03.2017
15:50:25
По умолчанию, метод joinWith() будет использовать конструкцию LEFT JOIN для объединения основной таблицы со связной. Вы можете указать другой тип операции JOIN (например, RIGHT JOIN) с помощью третьего параметра этого метода - $joinType. Если же вам нужен INNER JOIN, вы можете вместо этого просто вызвать метод innerJoinWith(). Вызов метода joinWith() будет жадно загружать связные данные по умолчанию. Если вы не хотите получать связные данные, вы можете передать во втором параметре $eagerLoading значение false.

поэтому рекомендуют использовать joinWith

1 запрос лучше чем 2

MSQ
07.03.2017
15:51:12
Google
andrew
07.03.2017
15:51:40
нет ну если там не гигабайты обрабатываются

то выгоднее сделать 1 крупный запрос, чем 10 мелких

MSQ
07.03.2017
15:51:49
Ну да)

andrew
07.03.2017
15:51:51
по времени

MSQ
07.03.2017
15:51:57
Тут по ситуации

Konstantin
07.03.2017
15:52:39
мой запрос получается работал

andrew
07.03.2017
15:52:42
с ситуациями, когда не нужно использовать жадную загрузку, я пока не сталкивался

Konstantin
07.03.2017
15:52:58
только я не знал что надо выводить данные так <li>Обводка труб: <?=$item->priceFeatures->pipe?> шт.</li>

MSQ
07.03.2017
15:53:44
Если ты так выведешь без жадной, то у тебя будет +1 запрос к бд вроде

Konstantin
07.03.2017
15:53:55
я пытался выводить эти данные так $item['pipe']

andrew
07.03.2017
15:53:56
+

если перед этим сделан запрос с joinWith то данные в кэше модели

а если просто - то да

Google
andrew
07.03.2017
15:54:28
будет еще один запрос

Konstantin
07.03.2017
15:55:41
в инете нет примеров как во вьювере выводить полученные данные

в этом был тупик

запросы научили делать

andrew
07.03.2017
15:56:14
ну теперь все норм

Konstantin
07.03.2017
15:56:20
а вот как вывести хз

MSQ
07.03.2017
15:56:25
Это хорошая тема чтобы разобраться

andrew
07.03.2017
15:56:34
+

MSQ
07.03.2017
15:56:45
Не всегда обо всем могут написать

Темболее в РУ доке

andrew
07.03.2017
15:56:54
юзай документацию, если не понятно, то лезь в исходники, там еще нагляднее все увидишь

Konstantin
07.03.2017
15:57:14
да эта тема вообще самая из нужных, не представляю сайт без JOIN запросов

и так мало ответов

Antony
07.03.2017
15:57:35
https://yii2-cookbook.readthedocs.io/ Есть еще кукбук неплохой

Konstantin
07.03.2017
15:59:49
by Alexander Makarov

тут опечатка ?

или он Александер

Antony
07.03.2017
16:00:33
https://github.com/samdark

Google
MSQ
07.03.2017
16:01:08
Александр. Да. CoreDev Yii

Konstantin
07.03.2017
16:02:29
блин я думал Александр пишется так а не Александер

Antony
07.03.2017
16:03:28
Если транслитерация - то без. Аналог в английском - Alexander.

Konstantin
07.03.2017
16:03:42
блин

а я отца всегда писал без Е буквы )))

Antony
07.03.2017
16:04:03
Это как Constantine

И прочие

В офф документах по идее имена должны транслитироваться, а так для англоязычных пользователей привычней все же аналог на их языке.

Konstantin
07.03.2017
16:06:01
а если я захочу приДжоинить три таблицы мне тоже надо в модель добавлять метод с hasOne той таблицы ?

типа так public function getTab1() { return $this->hasOne(Tab1::className(), ['id' => 'id']); } public function getTab2() { return $this->hasOne(Tab2::className(), ['id' => 'id']); }

ну более менее логика стала понятной теперь

Konstantin
07.03.2017
16:09:33
а вообще это сложно к пониманию, чтобы взаимосвязь таблиц устанавливать где то в модели а не в запросе

Аmal
07.03.2017
16:10:07
Да ничего сложного вроде если посидеть

Konstantin
07.03.2017
16:10:14
всю жизнь делал это в запросах непосредственно а тут надо методы отдельные еще делать

Аmal
07.03.2017
16:10:32
Можно и без прокладывания связи делать джоины

всю жизнь делал это в запросах непосредственно а тут надо методы отдельные еще делать
Просто так ты пишешь на уровне php не перемешивая sql и php код

У тебя не путаются запросы с переменными внутри вызовов функций... Старый добрый mysql_query

Aleksandr
07.03.2017
16:12:11
Konstantin
07.03.2017
16:12:31
тогда по логике и html с php не надо смешивать)

Google
Aleksandr
07.03.2017
16:13:02
with и joinWith выбирают данные одинаковым количеством запросов, только joinWith в запрос добавляет join со связанными таблицами

т.к. это может влиять на конечный результат

andrew
07.03.2017
16:14:27
http://www.yiiframework.com/doc-2.0/yii-db-query.html#join%28%29-detail

Konstantin
07.03.2017
16:15:24
Саш, вот первый метод если смотреть, если его использовать, нужно прописывать в модель связь (hasOne), ведь вроде бы запрос построен как старые времена с явным указанием какую табу джоинить?

http://shot.hsdn.org/5jmUaVAI

andrew
07.03.2017
16:16:36
1 способ это бред какой то

сначала делается join а потом еще и IN запрос

Konstantin
07.03.2017
16:18:11
сначала делается join а потом еще и IN запрос
без with будет куча запросов типа SELECT * FROM price_features WHERE id=23

Aleksandr
07.03.2017
16:18:17
AR - это о моделях. не надо на AR пытаться работать понятиями Query, в частности выбирать отдельные колонки

Admin
ERROR: S client not available

andrew
07.03.2017
16:18:55
без with будет куча запросов типа SELECT * FROM price_features WHERE id=23
там сначала забираются данные через join, судя по всему лишние, а потом делается нежадный запрос через IN

не вижу смысла в этом

joinWith работает как надо

ваш первый способ бессмысленен

Aleksandr
07.03.2017
16:19:58
joinWith работает как надо
работает также как и with, кроме включения в запрос join, который не влияет на кол-во запросов

andrew
07.03.2017
16:20:26
разе joinWith не забирает данные жадным запросом?

Aleksandr
07.03.2017
16:20:33
нет

andrew
07.03.2017
16:20:39
О_о

Aleksandr
07.03.2017
16:20:46
и with и joinWith - это вариации жадного запроса

Google
Aleksandr
07.03.2017
16:20:55
но не такого жадного как в yii1

andrew
07.03.2017
16:21:20
то есть joinWith все равно отправляет IN запрос с массивом айдишников??

Aleksandr
07.03.2017
16:21:29
да

andrew
07.03.2017
16:21:46
вот так новость, надо это проверить

Konstantin
07.03.2017
16:21:57
отправляет )

сперва делает

http://shot.hsdn.org/ue4eIYjV

потом еще раз

http://shot.hsdn.org/omTOq1bP

Aleksandr
07.03.2017
16:23:15
вот так новость, надо это проверить
теперь жадные запросы так работают - by design. Чтобы сохранить чистоту кода и не делать парсинга грязных данных

andrew
07.03.2017
16:23:34
а с какой версии?

Aleksandr
07.03.2017
16:23:39
с 2

andrew
07.03.2017
16:23:48
хм

Aleksandr
07.03.2017
16:24:48
вау, 2.0 https://framework.zend.com/blog/2017-03-07-expressive-2.html

вот это бы я всем посоветовал пощупать. конфетка

andrew
07.03.2017
16:25:50
а что лучше изучать после юи, зенд или симфони?

я пока остановился на симфони

Aleksandr
07.03.2017
16:26:11
я думаю да, симфони

но экпрессив - это не зенд, а микрофреймворк без зенда)

Аmal
07.03.2017
16:26:47
С phpixie кто нибудь работал?

Aleksandr
07.03.2017
16:27:34
С phpixie кто нибудь работал?
бесит меня этот чувак-накрутчик. слишком агрессивно продвигает, а в код глянешь - плакать хочется

andrew
07.03.2017
16:27:53
я слышал подкаст с ним :D

да, отправляется 2 запроса, даже если использовать joinWith O_o

Страница 93 из 1721