2014-11-02 70 views
1

我試圖用智能模式重寫我的查詢,使用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()) ?> 

任何人都可以幫助我嗎?謝謝!

回答

0
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') 

,我認爲它應該工作

相關問題