2016-11-03 45 views
0

型号:如何从gridview中的多个表中获取日期?

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是空的。错误在哪里?

回答

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列表。

相关问题