@akula22

Как сделать фильтрацию в GridView по некоторому условию других полей?

В GridView есть поле cancel_flag рядом с ним еще поля project_id, project_template_id, user_id, monitor
Мне нужно сделать фильтрацию в поле cancel_flag, где вывод этого поля такой
'value' => function ($model) {
                    if($model->user_id != 0 && $model->project_id != 0 && $model->project_template_id != 0 && $model->monitor == 1) {
                        return '<span class="label label-primary">Visible</span>';
                    }
//
                    if($model->user_id != 0 && $model->project_id != 0 && $model->project_template_id != 0 && $model->monitor == 0) {
                        return '<span class="label label-default">Hidden</span>';
                    }

                    if($model->user_id == 0 && $model->project_id == 0 && $model->project_template_id == 0) {
                        return '<span class="label label-info">Free</span>';
                    }
                },
 'filter' => Html::activeDropDownList($searchModel, 'cancel_flag', [0 => 'Visible', 1 => 'Hidden', 2 => 'Free'], ['class' => 'form-control', 'prompt' => 'All']),


Что надо сделать в SeacrhModel ?
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
@akula22 Автор вопроса
Я вроде понял как надо сделать.
if ($this->cancel_flag == 0) {
            $query->andFilterWhere(['not', ['address.user_id' => null]])
                ->andWhere(['not', ['address.project_id' => null]])
                ->andWhere(['not', ['address.project_template_id' => null]])
                ->andWhere(['address.monitor' => 1]);
        }

и так далее
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы