Я настроил 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 получает случайное количество строк на каждой странице.
Спасибо за помощь.