2016-03-25 11 views
4

スタッフにはテーブルの趣味の趣味が多く、詳細表示とグリッドビューがあります。Yii2 GridViewとDetailViewには多くの関連レコードが表示されますか?

しかし、私はエラー例外を得たTrying to get property of non-object

ここに私のスキーマのコードモデルです:

アプリの\モデルが\ TblDataStaff

enter image description here

.... 
     public function getTblDataHobis() 
      { 
       return $this->hasMany(TblDataHobies::className(), ['id_staff' => 'id']); 
      } 

ビューコード:view。

<?= DetailView::widget([ 
     'model' => $model, 
     'attributes' => [ 
... 
['attribute'=>'namHob','value'=>$model->tblDataHobis->id], 
... 
], 
    ]) ?> 

インデックス:スタッフの多くの趣味を表示する方法

<?= GridView::widget([ 
     'dataProvider' => $dataProvider, 
     //'filterModel' => $searchModel, 
     'columns' => [ 
      ['class' => 'yii\grid\SerialColumn'], 
...... 
['attribute'=>'namHob','value'=>function($namHob){return $namHob->tblDataHobis->name_hobby;},], 
..... 
['class' => 'yii\grid\ActionColumn'], 
     ],]);?> 

答えて

6

何も、あなたがTrying to get property of non-objectエラーが発生しているTblDataHobiesオブジェクトの配列を返すだけで$model->tblDataHobisので。

あなたは、単にこの試みることができる:ありがとう

'value' => function($model) { 
    return implode(\yii\helpers\ArrayHelper::map($model->tblDataHobis, 'id', 'name_hobby')), 
}, 
+0

DetailViewについては

// display hobbies names separated with commas echo implode(', ', \yii\helpers\ArrayHelper::map($model->tblDataHobis, 'id', 'name_hobby')); 

GridViewについては

'value' => implode(\yii\helpers\ArrayHelper::map($model->tblDataHobis, 'id', 'name_hobby')), 

を。これは仕事です –

0

てみません:奇妙

<?= DetailView::widget([ 
     'model' => $model, 
     'attributes' => [ 

     [ 
       'header' => 'number of hobbies', 
       'value' => function($data) { 
         return $data->getTblDataHobis()->count(); 
       } 
      ] 

    ]) ?> 
関連する問題