如何使用Yii2在下拉列表中显示关系数据

时间:2016-11-07 09:32:49

标签: join drop-down-menu yii2

我有3个表格:

  • Plan2 = id_plan2,id_plan1,target
  • Plan1 = id_plan1,Id_indicator,target
  • 指标= Id_indicator,名称

在视图_form plan2中我想从tabel Plan1填写id_plan1,但是显示指标的名称

如何制作

在Plan1模型中我创建了函数

public function  getIndicator()    
{
        return $this->hasOne(Indicator::className(), ['Id_indicator' => 'id_indicator']);
} 

在视图_form Plan2model

= $form->field($model, 'id_plan1')->dropDownList( ArrayHelper::map(plan1::find()->joinWith(['indicator'])->all(),'id_plan1', 'id_indicator'),
            [
                'prompt'=>'choose Indicator',

            ])

2 个答案:

答案 0 :(得分:0)

如果你使用的是基于getIndikator的关系,你应该在joinWith中使用indikator

= $form->field($model, 'id_plan1')->
            dropDownList( ArrayHelper::map(plan1::find()->joinWith(['indikator'])->all(),
            'id_plan1', 'id_indicator'),
        [
            'prompt'=>'choose Indicator',

        ])

答案 1 :(得分:0)

您应该尝试relationName.fieldName

$form->field($model, 'id_plan1')->dropDownList( ArrayHelper::map(plan1::find()->joinWith(['indicator'])->all(),'id_plan1', 'indicator.fieldName'),['prompt'=>'choose Indicator'])

column names are case insensitive - Mysql.