Приветствую!
Есть две таблицы, к которых есть поля type_id, min, max.
Нужно их связать так:
SELECT * FROM `tbl1` LEFT JOIN `tbl2` ON (`tbl1`.`type_id` = `tbl2`.`type_id`) AND ((tbl2.min >= tbl1.min) AND (tbl2.max <= tbl1.max)) WHERE `tbl1`.`id`='1'
Для этого написал примерно такую связь:
public function getTbl2()
{
return $this->hasMany(Tbl2::class, ['type_id' => 'type_id'])
->andOnCondition(Tbl2::tableName() . '.min >= ' . self::tableName() . '.min')
->andOnCondition(Tbl2::tableName() . '.max <= ' . self::tableName() . '.max');
}
При попытке вывести значение из tbl2 так:
$t = Tbl1::find()->byPk($id)->joinWith('tbl2')->one();
var_dump($t->tbl2);
Получаю такую ошибку:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'tbl1.min' in 'where clause'
The SQL being executed was: SELECT * FROM `tbl2` WHERE (`type_id`=1) AND ((tbl2.min>= tbl1.min) AND (tbl2.max <= tbl1.max))