Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从模型中的关系获取全名_Php_Gridview_View_Yii2_Relation - Fatal编程技术网

Php 从模型中的关系获取全名

Php 从模型中的关系获取全名,php,gridview,view,yii2,relation,Php,Gridview,View,Yii2,Relation,我有模特博客,我在那里有关系: public function getRelUser() { return $this->hasOne(UrUser::className(), ['Id' => 'Rel_User']); } 我想在gridView中的blogView索引中使用全名: <?= GridView::widget([ 'dataProvider' => $dataProvider, 'filt

我有模特博客,我在那里有关系:

public function getRelUser()
    {
        return $this->hasOne(UrUser::className(), ['Id' => 'Rel_User']);
    }
我想在gridView中的blogView索引中使用全名:

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            'Id',
            'Title',
            'Description',
            'Rel_User',
            [
        'attribute' => 'Rel_User',
        'value' => 'relUser.Name'
        ], 
            'CreatedAt',
            // 'IsDeleted',

            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>


这将返回列中的唯一名称。我想返回全名。

在UrUser模型中添加新方法:

class UrUser extends \yii\db\ActiveRecord
{
    ....

    public function getFullName()
    {
        return $this->name .' '. $this->last_name;
    }
}
在您的视图中使用它,如下所示:

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            'Id',
            'Title',
            'Description',
            'Rel_User',
            [
                'attribute' => 'Rel_User',
                'value' => function ($model) {
                    return $model->relUser->getFullName();
                },
             ], 
            'CreatedAt',
            // 'IsDeleted',

            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>

试试这个

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            'Id',
            'Title',
            'Description',
            'Rel_User',
            [
        'attribute' => 'Rel_User',
        'value' => function($model) { 
              return $model->relUser->name  . " " . $model->relUser->last_name ;
            },
        ], 
            'CreatedAt',
            // 'IsDeleted',

            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>

我想你不需要匿名函数
'value'=>relUser.fullName可能已经足够了,因为您已经为它定义了一个getter方法。当我使用时:
'value'=>'relUser.fullName'
它显示我的'not set'值,但它在DetailView中不起作用。在DetailView中解决这个问题很容易。您可以删除属性并添加标签和自己的过滤器。
[
  'label'=>'Full Name',
  'value'=>'$data->relUser->name . " " . $data->relUser->last_name',
]