模型:
public function getGroups()
{
return $this->hasMany(Groups::className(), ['id' => 'employee_id'])
->viaTable('groups_of_employee', ['group_id' => 'id']);
}
视图:
<div class="site-index">
<?= GridView::widget([
'dataProvider' => $provider,
'columns' => [
'lastname',
'position',
'groups.name_of_group'
],
]);
?>
我编写了这段代码,它没有错误,但字段name_of_group为空。错误在哪里?
答案 0 :(得分:1)
如果关系是多对多,则无法传递关系,然后传递表名/类属性。它本身并不知道如何在一列中输出多个结果,因此您需要执行与此类似的操作...
<?= GridView::widget([
'dataProvider' => $provider,
'columns' => [
'lastname',
'position',
[
'label' => 'Groups'
'value' => function($data) {
$names = '';
foreach ($data->groups as $group) {
$names .= $group->name_of_group . ', ';
}
return $names;
},
]
],
]);
?>
这将帮助您入门,但您可能希望应用一些不同的格式来列出所有名称,例如HTML列表。