从另一个表中添加Gii表单中的字段

时间:2016-03-17 13:48:44

标签: yii2 yii2-advanced-app

我有一个名为child(id,name,sport_id)的表,一个名为sports(id,name)的表,一个名为parent(id,name)的表和一个名为child_parent的表(id,child_id,parent_id)。 / p>

我用Gii创建了crud,我修改了child_parent以显示不是孩子和父母的id而是名字,也为搜索和创建表单创建了一个下拉列表。但我不能做的一件事就是从名为'Sport'的索引上添加一个额外的列,这样我就可以通过运动来过滤孩子/父母。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

不需要连接表,可以使用自引用关系。

  • node(id,parent_id,sport_id,name)
  • sport(id,name)

使用parent_id默认为NULL(root)。如果需要,您可以为强制子项与父项具有相同sport_id的字段添加规则或条件可见性(除非它是根)。

现在您可以轻松启用运动过滤。

[
    'attribute' => 'sport_id',
    'filter' => Html::activeDropDownList(
        $searchModel, 
        'sport_id',
        ArrayHelper::map(Sport::find()->all(),'id','name'),
        ['prompt' => '']
    ),
    'value' => function($model) {
        return $model->sport->name;
    }
],