Некорректная Работа Пагинатора

Здравствуйте!

Подскажите, пожалуйста.

Делаю выборку з таблиц при этом использую группировку GROUP BY.

Вывожу с помощью виджета CListView.

Используется пагинатор. При этом он выдает неправильное кол-во страниц - последняя ссылка лишняя!!!

Тоисть подсчет общего кол-ва записей не совпадает с кол-вом выборки при условии использования группировки GROUP BY.

Как быть? Как заставить пагинатор учитывать кол-во страниц с условием грппировки?

Спасибо за любой совет!

Скорее всего у вас генерируется не совсем правильный SQL запрос. Посмотрите его в логе, наверняка там с JOIN проблема и возвращаются дублирующие строки.

В качестве выстрела наугад, попробуйте там где генерируете DBCriteria добавить: $criteria->together=true;

ВОПРОС РЕШИЛСЯ:

Соответственно, мы руками высчитываем общее количество и устанавливаем найденное значение в атрибут totalItemCount компонента CActiveDataProvider




// Клонируем объект критерии, чтобы посчитать общее количество записей

   $countCriteria = clone $criteria;

   $countCriteria->select = '1';

   $sum = count(static::model()->findAll($countCriteria));




   $pages=new CPagination($sum);

   $pages->pageSize=50;

   $pages->applyLimit($criteria);


   return new CActiveDataProvider(get_class($this), array(

     'totalItemCount' => $sum,

     'criteria'=>$criteria,

     'pagination'=>$pages,

     'sort' => array(

       'attributes' => array(

         // Тут устанавливаем свою сортировку по нужному полю

         'clicks' => array(

           'asc' => 'SUM(clicks) ASC',

           'desc' => 'SUM(clicks) DESC',

         )

       ),

       'defaultOrder' => 'date DESC',

     ),

    ));