php - Yii2 GridView 和 DetailView 中如何显示有多条关联记录?

标签 php gridview yii2 detailview

我想在详细 View 和 GridView 中显示员工有很多来自表爱好的爱好。

但是我得到了一个错误异常Trying to get property of non-object

这是我的架构代码模型:

app\model\TblDataStaff

enter image description here

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

view code: view.

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

index:

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

如何展现员工的众多爱好?

最佳答案

没什么奇怪的,你有一个Trying to get property of non-object 错误仅仅是因为$model->tblDataHobis返回了一个数组TblDataHobies 对象。

你可以简单地试试这个:

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

对于 DetailView :

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

对于 GridView :

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

关于php - Yii2 GridView 和 DetailView 中如何显示有多条关联记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36222860/

相关文章:

php - 从中间件的终止方法中的请求调用方法

iphone - iOS 中带有图片的 XML Gridview

yii2 - 如何在 yii2 模态窗口中重新加载 pjax div

php - 每当我在表中添加多行数据时,都会收到错误消息 '' 获取未知属性”

gridview - Yii2 GridView实现外部表相关表的值过滤和排序

javascript - 如何在php的echo语句中使用三元运算符

javascript - 如何在输入字段上获取数组值

PHP 检索位掩码值

java - Android GridView wrap_content 单元格宽度和每行动态项目数

c# - 动态添加图像到asp.net c# gridview