yii2添加搜索小部件网格视图

yii2添加搜索小部件网格视图,yii2,Yii2,**如何将girdView搜索添加到关系表列 我有所有的girlview搜索框,除了我的关系表 (developerActivity.developer_point)和('developerActivity.project_done') 我有它们的值,但小部件搜索框不在它们上面** 我的控制器 $searchModel = new DeveloperSearch(); $dataProvider = $searchModel->search(Yii::$app-&g

**如何将girdView搜索添加到关系表列

我有所有的girlview搜索框,除了我的关系表 (developerActivity.developer_point)和('developerActivity.project_done') 我有它们的值,但小部件搜索框不在它们上面**

我的控制器

   $searchModel = new DeveloperSearch();

        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        return $this->render('dashboard', [
            'dataProvider' => $dataProvider,
            'searchModel' => $searchModel
        ]);
我的搜索模型

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;
    }
}
模型

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']);
    }

}
和developerActivity模型类

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

        ];

    }

}
这里是风景
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,

    'columns' => [
        'developer_id',
        'name',
        'email',
        'phone',
        'email',
        'developersActivity.developer_point',
        'developersActivity.project_done'


        //  'value'=>'developersActivity.point',
        //'contentOptions'=>['style'=>'width: 120px;']
    ],


]);
?>

在模型中,为字段添加一个getter(假设字段名为actvityname)

在您的搜索模型中

为相关字段添加公共变量,并在规则中声明为安全

  /* your calculated attribute */
  public $activityName;

  /* setup rules */
  public function rules() {
     return [
      /* your other rules */
      [['activityName'], 'safe']
     ];
  }
在过滤器中,您可以为字段添加过滤器

    // filter by developer activity
    $query->joinWith(['developersActivity' => function ($q) {
        $q->where('yor_develeoper_activity_table.your_developer_activity_column LIKE "%' . $this->activityName. '%"');
    }]);

    return $dataProvider;
在gridview中,您可以使用

  'columns' => [
    ['class' => 'yii\grid\SerialColumn'],
    'id',
    'fullName',
    'activityName',
    ['class' => 'yii\grid\ActionColumn'],
]

您可以在本教程中查看一些建议,在模型中为字段添加一个getter(假设字段名为actvityname)

在您的搜索模型中

为相关字段添加公共变量,并在规则中声明为安全

  /* your calculated attribute */
  public $activityName;

  /* setup rules */
  public function rules() {
     return [
      /* your other rules */
      [['activityName'], 'safe']
     ];
  }
在过滤器中,您可以为字段添加过滤器

    // filter by developer activity
    $query->joinWith(['developersActivity' => function ($q) {
        $q->where('yor_develeoper_activity_table.your_developer_activity_column LIKE "%' . $this->activityName. '%"');
    }]);

    return $dataProvider;
在gridview中,您可以使用

  'columns' => [
    ['class' => 'yii\grid\SerialColumn'],
    'id',
    'fullName',
    'activityName',
    ['class' => 'yii\grid\ActionColumn'],
]
您可以在本教程中查看一些建议