2017-07-14 13:44
浏览 54


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])

    $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([
    'panel'=>['type'=>'primary', 'heading'=>'Members Report'],
    'columns' => [

            'label'=>'First Name',

            'label'=>'Email Id',


  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

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'],
    解决 无用
    打赏 举报

相关推荐 更多相似问题