yii2 add search widget grid view -


**how can add girdview search relation table column ?

i have girlview search box except relation table (developersactivity.developer_point) , ('developersactivity.project_done') have thier value widget search box not apear above them**

my controller

   $searchmodel = new developersearch();          $dataprovider = $searchmodel->search(yii::$app->request->queryparams);          return $this->render('dashboard', [             'dataprovider' => $dataprovider,             'searchmodel' => $searchmodel         ]); 

my search model

class developersearch extends developers {     public function rules()     {         return parent::rules();     }      public function scenarios()     {         return model::scenarios();     }      public function search($param)     {          $query = developers::find();          $dataprovider = new activedataprovider([             'query' => $query         ]);          $this->load($param);          $query->joinwith('developersactivity');          $dataprovider->setsort([             'attributes'=> [                 'name',                 'developersactivity.developer_point'=>[                     'asc'=>['developer_point'=>sort_asc],                     'desc'=>['developer_point'=>sort_desc],                 ]             ]         ]);          $query->andfilterwhere([             'developer_id' => $this->developer_id,         ]);          $query->andfilterwhere(['like', 'name', $this->name])             ->andfilterwhere(['like', 'phone', $this->phone])             ->andfilterwhere(['like', 'email', $this->email]);          return $dataprovider;     } } 

the model

class developers extends activerecord {      public static function tablename()     {         return 'developers';     }        public function rules()     {         return [             [['name',                 'family',                 'phone',                 'email',                 'address',                 'brithday',                 'age',                 'ability',                 'role',                  'join_date',                 ], 'required'],             [['developer_id'], 'integer'],             ['email','email'],             [['phone'],'integer', 'min' => 10],             [['address'], 'string', 'max' => 100],             [['name'], 'string', 'min' => 3],          ];     }        public  function getdevelopersactivity(){         return $this->hasone(developersactivity::classname(),['developer_activity_id' => 'developer_id']);     }  } 

and developersactivity model class

class developersactivity extends activerecord {     public function rules()     {         return [             [['developer_activity_id',                 'developer_point',                 'project_done',                 'free_rate',                 'address',                 'estimate_for_next_project',                 'date_project_done',                 'number_of_project',                 'activity_rate',             ], 'safe'],          ];      }  } 

here view

    'dataprovider' => $dataprovider,     'filtermodel' => $searchmodel,      'columns' => [         'developer_id',         'name',         'email',         'phone',         'email',         'developersactivity.developer_point',         'developersactivity.project_done'           //  'value'=>'developersactivity.point',         //'contentoptions'=>['style'=>'width: 120px;']     ],   ]); ?> 

in model add getter field (assuming field named actvityname)

/* getter deleveloer activity name   */  public function getdevelopersactivityname() {    return $this->developersactivity->activityname;  } 

in searchmodel

add public var related field , declare safe in rules

  /* calculated attribute */   public $activityname;    /* setup rules */   public function rules() {      return [       /* other rules */       [['activityname'], 'safe']      ];   } 

and in filter can add filter field

    // filter developer activity     $query->joinwith(['developersactivity' => function ($q) {         $q->where('yor_develeoper_activity_table.your_developer_activity_column "%' . $this->activityname. '%"');     }]);      return $dataprovider; 

in gridview can refer directly using

  'columns' => [     ['class' => 'yii\grid\serialcolumn'],     'id',     'fullname',     'activityname',     ['class' => 'yii\grid\actioncolumn'], ] 

you can take ad tutorial suggestions http://www.yiiframework.com/wiki/621/filter-sort-by-calculated-related-fields-in-gridview-yii-2-0/


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -