如何在Yii2上连接来自不同表格的2列

问题描述:

我试图用智能模式重写我的查询,使用Yii2的功能。如何在Yii2上连接来自不同表格的2列

原件及工作方法是:

public function getApartamentos() { 
    $query = Apartamento::findBySql('select apartamento.id as id, CONCAT(apartamento.numero, \' \', torre.sigla, \' (\', torre.nome, 
\')\') as numero_completo from apartamento left join torre on 
apartamento.torre_fk = torre.id') ; 
    return ArrayHelper::map($query->asArray()->all(),'id','numero_completo'); 
} 

所以,我试图改变上述方法上:

public function getApartamentos() { 
    $query = Apartamento::find() 
      ->joinWith('torreFk') 
      ->select(['apid'=>'apartamento.id','numeroap'=>'CONCAT(apartamento.numero, 
\' \', torre.sigla, \' (\', torre.nome, \')\')']); 
    return ArrayHelper::map($query->asArray()->all(),'apid','numeroap'); 
} 

但是,当我做到这一点,我收到一些错误:

PHP Notice – yii\base\ErrorException 
Undefined index: id 
in <?=$form->field($model, 'apartamento_fk')->dropDownList(Apartamento::getApartamentos()) ?> 

任何人都可以帮助我吗?谢谢!

PHP Notice – yii\base\ErrorException Undefined index: id in 
field($model, 'apartamento_fk')->dropDownList(Apartamento::getApartamentos()) ?> 

id表示apartamento_fk ...
你打你的形式正确的模式?

,而不是joinwith
更好地利用

->leftjoin('torre','apartamento.torre_fk = torre.id') 

,我认为它应该工作