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

qwe*_*rty -1 php gridview view relation yii2

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

public function getRelUser()
    {
        return $this->hasOne(UrUser::className(), ['Id' => 'Rel_User']);
    }
Run Code Online (Sandbox Code Playgroud)

我想在 gridView 的 blogView 索引中使用 fullName:

<?= 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'],
        ],
    ]); ?>
Run Code Online (Sandbox Code Playgroud)

这在列中只返回我的名字。我想返回全名。

And*_* Bu 5

在 UrUser 模型中添加新方法:

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

    public function getFullName()
    {
        return $this->name .' '. $this->last_name;
    }
}
Run Code Online (Sandbox Code Playgroud)

并在您的视图中使用它,如下所示:

<?= 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'],
        ],
    ]); ?>
Run Code Online (Sandbox Code Playgroud)

  • 我认为您不需要匿名功能。`'value' =&gt; relUser.fullName` 可能就足够了,因为你已经为它定义了一个 getter 方法。 (2认同)