joinWith

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

joinWith

Сообщение Brainfuck »

Есть модель `A`, у нее есть свойство `b` (hasMany), у каждой модели свойства `b` есть свойство `c` (hasOne). Мне надо получить запрос вида

Код: Выделить всё

select *
from a 
left join b on b.a_id = a.id 
left join c on c.b_id = b.id
Я пишу

Код: Выделить всё

A::find()->joinWith('b')->joinWith('c')->all()

Но так не получается - пишет что у модели `A` нет свойства `c`, что вообщем-то логично. Но как сделать правильно? Обычным join? Типа того

Код: Выделить всё

A::find()->joinWith('b')->join('LEFT JOIN', C::tableName(), 'c.b_id = b.id')->all()
Так выходит, но как-то это некрасиво... Хочется через relation
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: joinWith

Сообщение urichalex »

Значит в модели А не создана связь с С
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: joinWith

Сообщение chesar »

Возможно

Код: Выделить всё

A::find()->joinWith(['b', 'b.c'])->all()
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: joinWith

Сообщение Brainfuck »

urichalex писал(а): 2018.12.25, 11:07 Значит в модели А не создана связь с С
Ее там и не должно быть
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: joinWith

Сообщение Brainfuck »

chesar писал(а): 2018.12.25, 13:00 Возможно

Код: Выделить всё

A::find()->joinWith(['b', 'b.c'])->all()
Спасибо, вроде работает
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: joinWith

Сообщение andku83 »

Так тоже будет работать:

Код: Выделить всё

A::find()->joinWith('b.c')->all()
Здесь еще много подобной информации есть
Ответить