我有一个名为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'的索引上添加一个额外的列,这样我就可以通过运动来过滤孩子/父母。我怎样才能做到这一点?
答案 0 :(得分:0)
不需要连接表,可以使用自引用关系。
使用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;
}
],