Как оказалось (судя по запросам в логе) вариант без select спасает лишь потому что, там делается еще один SELECT как в варианте с обычным with(). А в SELECT с JOIN возвращаются данные только из первой таблицы.
Где же логика? Смысл в таких join когда данные из таблицы не выбираются. Хотя по логике должно в каждую модель прийти по полю. В модель "ModelA" колонка "id", а в "ModelB" колонка "name".
Если это не логично, то подскажите как логично выбрать данные с JOIN из двух таблиц?
>Если это не логично, то подскажите как логично выбрать данные с JOIN из двух таблиц?
через with, будет правда лишний запрос, но не будет зависимости на конкретную БД
lynicidn писал(а):>Если это не логично, то подскажите как логично выбрать данные с JOIN из двух таблиц?
через with, будет правда лишний запрос, но не будет зависимости на конкретную БД
Так вот и дело то в том что мой пример с join также как и with делает два запроса. А join по большому счету выходит как костыль для всяких сортировок.
Sam Dark писал(а):Хотя-бы id должен присутствовать и в одной и в другой модели.
Не пойму что вы имеете виду. Нужно что-то добавить в выборку? Так в примере и так данные есть. Ради интереса пробовал выбрать id из обеих, и пробовал со *. Все по старому.
Вообще вот https://github.com/yiisoft/yii2/issues/3929 что пишут. Мол это решение такое. Выглядит конечно они совсем не ахти. join получается как костыль для всяких grid где нужны сортировки. Ведь все-равно идет второй запрос как с обычным with. В доке вроде про это не сказано.
Sam Dark писал(а):Хотя-бы id должен присутствовать и в одной и в другой модели.
Не пойму что вы имеете виду. Нужно что-то добавить в выборку? Так в примере и так данные есть. Ради интереса пробовал выбрать id из обеих, и пробовал со *. Все по старому.
Вообще вот https://github.com/yiisoft/yii2/issues/3929 что пишут. Мол это решение такое. Выглядит конечно они совсем не ахти. join получается как костыль для всяких grid где нужны сортировки. Ведь все-равно идет второй запрос как с обычным with. В доке вроде про это не сказано.
если я правильно понял, то в селекте должно быть как минимум
это же AR, тут обязательно должны быть эти поля, чтоб можно было бы потом манипулировать моделями, тот же update
а вы для второй таблицы id не возвращаете, вот модель видимо и не может собраться