dsfs23434 2017-07-14 13:44
浏览 56
已采纳

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

Below is the dataprovider query i have used in search function of the UserSearch model, extended from User model. I am trying to show the value of 'entries' in the gridview but unable to access the column 'entries'. Please help.

     $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,
    ]);

User Model code

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 Code

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',
          ],

    ],
]);       
  • 写回答

1条回答 默认 最新

  • duanque3125 2017-07-14 13:48
    关注

    the simple way for manage calculated columns is add a public var in your model class (User model in this case)

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

    then in you gridview you can simply add this name the columns

    'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            ....
            'entries',
            .....
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 求购一套带接口实现实习自动签到打卡
  • ¥50 MacOS 使用虚拟机安装k8s
  • ¥500 亚马逊 COOKIE我如何才能实现 登录一个亚马逊账户 下发新 COOKIE ..我使用下发新COOKIE 导入ADS 指纹浏览器登录,我把账户密码 修改过后,原来下发新COOKIE 不会失效的方式
  • ¥20 玩游戏gpu和cpu利用率特别低,玩游戏卡顿
  • ¥25 oracle中的正则匹配
  • ¥15 关于#vscode#的问题:把软件卸载不会再出现蓝屏
  • ¥15 vimplus出现的错误
  • ¥15 usb无线网卡转typec口
  • ¥30 怎么使用AVL fire ESE软件自带的优化模式来优化设计Soot和NOx?
  • ¥15 Ubuntu20.04.4.LTS系统如何下载安装VirtualBox虚拟机?