Yii cgridview cactivedataprovider не работает должным образом

Я настроил Yii cactivedataprovider, так как в документации написано:

$criteria = new CDbCriteria();
$criteria->together = true;

$criteria->with = array(
        'relationId0',
        'relationId1',
        ... 
);

$criteria->compare('"relationId0".property0', $this->relationId0_property0, true);
return new CActiveDataProvider($this, array(
        'criteria' => $criteria,
        'sort' => array(
            'attributes' => array(
                ...
                'relationId0.property0' => array(
                    'asc' => '"relationId0".property0',
                    'desc' => '"relationId0".property0 DESC',
                ),
                ...
             )
         )
));

Итак, когда -> вместе - ложь, то gridview работает должным образом и получает все строки, что разрешено разбиением на страницы, но в этом случае сравнение (то есть поиск) не работает (потому что этот способ не использует связанные объекты в запросе sql),

но когда -> вместе - истина (и, возможно, это решение), сравнение работает, но gridview получает случайное количество строк на каждой странице.

Спасибо за помощь.

1 ответ

Попробуй добавить pagination в ваш поставщик данных.

return new CActiveDataProvider($this, array(
    'criteria' => $criteria,
    'pagination'=>array('pageSize'=>10),
    'sort' => array(
        'attributes' => array(
            ...
            'relationId0.property0' => array(
                'asc' => '"relationId0".property0',
                'desc' => '"relationId0".property0 DESC',
            ),
            ...
         )
     )
));

Это должно решить вашу проблему.

Другие вопросы по тегам