如何在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')
,我认为它应该工作