Как добавить условие в dataProvider в yii2

1138
07 февраля 2017, 23:07

С помощью CRUD с генерировал GridView на индексной странице.

На данный момент в GridView отображаются все элементы из таблицы в БД.

Хотел что бы не отображались все данные, а только те у которых например поле some_id в таблице равно 12.

Пробовал так:

В место $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

Написал

$query = SomeModel::find()->where(['some_id' => 12]);   
$dataProvider = new ActiveDataProvider([
  'query' => $query,
     'pagination' => [
        'pageSize' => 20,
      ],
]);

Вроде все получилось, но теперь не работает searchModel.

Или можно как нибудь добавить условие в строку

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

UPDATE:

На самом деле в контроллере actionIndex принимает параметр some_id, и после этого выводит данные у которых выполняется условие.

public function actionIndex($some_id){
    $searchModel = new SomeModelSearch();
    // Я сам закомментировал
    //$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    // И добал это
    $query = SomeModel::find()->where(['some_id' => $some_id]);                             
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
        'pagination' => [
                'pageSize' => 20,
        ],
    ]);
    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
}
Answer 1

В $searchModel в методе search в конце перед return $dataProvider добавьте свой запрос, к примеру вот такой:

$query->andFilterWhere(['some_id' => 12]);
READ ALSO
запуск Python скрипта через PHP

запуск Python скрипта через PHP

делаю такправа на скрипт +x

1130
Загрузка файла вместо просмотра

Загрузка файла вместо просмотра

Имеется кнопка скачать на клиенте, по нажатию на которую уходит запрос на сервер с целью получения файла для скачивания

687