2016-11-03 5 views
0

モデル:どのように私はグリッドビューの多くのテーブルから多くの日付を取得できますか?

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; 
      }, 
     ] 
    ], 
]); 
?> 

それは本質的に... 1つの列にどのように出力複数の結果を知りませんが、あなたは、おそらくのために、いくつかの異なる書式を適用することになるでしょうHTMLリストなど、すべての名前をリストします。

関連する問題