Запрос:
select T1.id, T2.name
from T1
left join T2 on
T2.t1_id = T1.id and
T2.user_id = 500
where T1.x > 0
Пробовал:
$query= T1::find()->select('T1.id, T2.name')->leftJoin('T2', 'T2.t1_id = T1.id and T2.user_id = 500')->andWhere(['>', 'T1.x', 0]);
Запрос отрабатывает правильно, но нет доступа к данным из таблицы T2, то есть $query->id существует, а $query->name нет.
Нагуглил что если нужны колонки из второй таблицы то надо через связи, я в модели T1 прописал:
public function getТ2()
{
return $this->hasMany(Т2::className(), ['t1_id' => 'id', 'user_id' => 500]);
}
Но тут штука в том что нельзя указывать конкретное значение для связи, а только колонки таблиц, но в Т1 нет колонки с этим значением и быть не должно. Перенести же условие user_id=500 в where будет неправильно, мне нужно чтобы именно в условии leftjoin оно фигурировало.
P.S Натыкался на вариант решения через asArray() чтобы иметь доступ к колонкам второй таблицы, но в этом случае числовые типы приводятся к строковым, а этого совсем не хочется, да и наверняка же через ActiveRecord можно составить любой вопрос без костылей, в общем помогите пожалуйста, а то уже несколько дней не могу нужный запрос составить)