Бьюсь уже третьи сутки. Гуглил до тошноты. Будьте добры, направьте в нужно русло.
Ситуация: на сайте есть пользователи. Пользователи имеют определенные характеристики, которые хранятся в связанных таблицах. Нужно найти пользователей, соответствующих определенным характеристикам.
Проблема: отражена ниже на скриншотах
Модель Users
public function relations() {
return array(
'usersMotivations' => array(self::HAS_MANY, 'UsersMotivations', 'userID'),
);
}
Действие контроллера
public function actionIndex() {
$criteria = new CDbCriteria;
$criteria->with = array('usersMotivations');
$criteria->addInCondition('motivationID',array(1,2));
$criteria->together = true;
$dataProvider = new CActiveDataProvider('Users',array(
'criteria'=>$criteria,
'pagination'=>array('pageSize'=>10)
));
$this->render('index', array( 'dataProvider' => $dataProvider));
}
Представление
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
));
И вот здесь происходит самое интересное. При 'pagination'=>array('pageSize'=>10) страница с результатами выглядит так:
При 'pagination'=>array('pageSize'=>2) один из результатов дублируется на двух страницах
Теперь если убрать строку $criteria->addInCondition('motivationID',array(1,2)); то один из результатов дублируется, а другой — исчезает вообще
Опытным путем выяснил, что виной всему $criteria->together = true; и если его убрать, то с пагинацией становится все нормально, но тогда перестает работать условие поиска
$criteria->addInCondition('motivationID',array(1,2));
Как быть, подскажите пожалуйста?