2016-11-03 40 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列表。

相關問題