@akula22

SqlDataProvider и searchModel, как?

В ActiveDataProvider я использовал в модель поиска
$query = self::find().....
$query->andFilterWhere(['like', 'username', $this->username]);

а как такое же сделать в SqlDataProvider ?
Я так понимаю так уже не сделать, а как делается поиск(фильтрация) в SqlDataProvider
  • Вопрос задан
  • 513 просмотров
Пригласить эксперта
Ответы на вопрос 3
@matperez
Класс Query умеет рендериться в SQL, так что можно сделать что-то подобное приведенному ниже, но сам не пробовал, может и не будет работать...
$query = new Query();
$query->andWhere(['some' => $this->some]);
// ... тут всякие другие условия
$dataProvider = new SqlDataProvider([
   'totalCount' => $query->count(),
   'sql' => $query->createCommand()->sql, 
]);
Ответ написан
Комментировать
VladimirAndreev
@VladimirAndreev
php web dev
так SqlDataProvider ожидает запрос либо объект построителя запросов
Ответ написан
Комментировать
bitver
@bitver
www.yiiframework.com/doc-2.0/yii-data-sqldataprovi...

$dataProvider = new SqlDataProvider([
    'sql' => 'SELECT * FROM user WHERE status=:status',
    'params' => [':status' => 1],  // <--------------
    'totalCount' => $count,
    'sort' => [
        'attributes' => [
            'age',
            'name' => [
                'asc' => ['first_name' => SORT_ASC, 'last_name' => SORT_ASC],
                'desc' => ['first_name' => SORT_DESC, 'last_name' => SORT_DESC],
                'default' => SORT_DESC,
                'label' => 'Name',
            ],
        ],
    ],
    'pagination' => [
        'pageSize' => 20,
    ],
]);
Ответ написан
Ваш ответ на вопрос

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

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