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',
                ),
                ...
             )
         )
));

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

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

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


person Gábor Varga    schedule 12.03.2015    source источник


Ответы (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',
            ),
            ...
         )
     )
));

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

person hamed    schedule 12.03.2015