在 Yii2 中无法在 gridview 中显示来自模型的自定义列

In Yii2 Unable to show custom column from model in gridview

下面是我在 UserSearch 模型的搜索功能中使用的数据提供者查询,它是从 User 模型扩展而来的。我试图在 gridview 中显示 'entries' 的值,但无法访问列 'entries'。请帮忙。

     $query = User::find()
         ->select("users.Id, users.FirstName, users.LastName, users.EntryId, GROUP_CONCAT(entry.EntryId ORDER BY entry.Id SEPARATOR '<br>') as entries")        
         ->join('LEFT OUTER JOIN','entry','entry.CustomerEntryId = users.EntryId')
         ->where(['users.IsActive' =>1])
         ->groupBy('users.Id');

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);

用户模型代码

class User extends \yii\db\ActiveRecord
{
   public $password_repeat;
    public static function tableName()
    {
       return 'users';
    }

     public function rules()
    {
        return [
            [['FirstName','LastName','EmailId','MobileNo','Password','password_repeat'], 'required'],
            ['EmailId', 'email'],
            [['EmailId'], 'unique'],
            ['password_repeat', 'compare', 'compareAttribute'=>'Password', 'message'=>"Passwords don't match",  ],
            ['MobileNo', 'is8NumbersOnly'],         
        ];
    }

    public function is8NumbersOnly($attribute)
    {
        if (!preg_match('/^[0-9]{8}$/', $this->$attribute)) {
            $this->addError($attribute, 'must contain exactly 8 digits.');
        }
    }
}

GridView 代码

echo GridView::widget([
    'dataProvider'=>$dataProvider,
    'filterModel'=>$searchModel,
    'showPageSummary'=>true,
    'pjax'=>true,
    'striped'=>true,
    ],
    'panel'=>['type'=>'primary', 'heading'=>'Members Report'],
    'columns' => [

          [
            'label'=>'First Name',
            'attribute'=>'FirstName',
            'value'=>'FirstName',
          ],

          [
            'label'=>'Email Id',
            'attribute'=>'EmailId',
            'value'=>'EmailId',
          ],

          [
            'label'=>'Entries',
            'attribute'=>'Entries',
            'value'=>'entries',
          ],

    ],
]);       

管理计算列的简单方法是在模型中添加一个 public var class(在本例中为用户模型)

class User extends \yii\db\ActiveRecord
{
   public $entries

然后在您的 gridview 中,您可以简单地将此名称添加到列中

'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        ....
        'entries',
        .....