@mr-zherart

Как сделать CPagination выборку правильно?

Здравствуйте. В базе 4 записи, из них 3 имеют параметры, которые должны удовлетворять выборке и выводиться на страницу в постраничной навигации.
Пока для примера вывожу по одной записи.

$criteria = new CDbCriteria();	
$total = UserDonate::model()->count();
$pages = new CPagination($total);
$pages->pageSize = 1;
$pages->applyLimit($criteria);


Далее идет сама выборка

$userDonate = Yii::app()->db->createCommand()
->select('name,lastname,donate,inhonor,date,country_code,country_name_ua')
->from('{{user}} user')
->join('{{user_donate}} ud', 'user.id=ud.user_id')
->join('{{countries}} country', 'user.country=country.id')
->limit($pages->pageSize, $pages->currentPage)
->where(array('and', 'ud.status=1', 'ud.prog_id=:prog_id'), array(':prog_id'=>$prog_id))
->queryAll();


Но в результате оно берет 1 запись (первую, которая удовлетворяет условие) и все. Уверен, что проблема с лимитом, помогите разобраться. Спасибо!!!

UPD Использую расширение yiinfinite-scroll, и нужно именно с CPagination.

UPD2 Интересно, что если из запроса выбросить
->where(array('and', 'ud.status=1', 'ud.prog_id=:prog_id'), array(':prog_id'=>$prog_id))

то все работает. Только понятное дело работает для всех записей.
  • Вопрос задан
  • 2284 просмотра
Пригласить эксперта
Ответы на вопрос 1
А почему не через www.yiiframework.com/doc/api/1.1/CActiveDataProvider ?
$dataProvider = CActiveDataProvider(
                'user',
                array(
                    'criteria'=>$criteria,
                    'pagination'=>array(
                        'pageSize'=>1,
                        //'pageVar' =>'page',
                    ),
                )
            );
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы