Ayuda con paginación

Hola, ojala alguien me pudiera ayudar, tengo un problema con la paginacion, resulta que al paginar me muestra un total de x elementos, el cual es menor al numero de elementos que obtengo en la consulta de los items, lo que sucede es que al realizar la consulta al crear un CactiveDataProvider para un CListView mis elementos los agrupo de acuerdo a un campo, por lo que resultan menos elementos de los que cuenta la consulta que obtiene el numero de elementos para la paginacion, he ubicado el problema parcialmente veo que la consulta para contar es:


SELECT COUNT(DISTINCT `existence`.`id`) FROM `tbl_existence` `existence` LEFT JOIN `tbl_playset` `playset` ON (`existence`.`playsetId`=`playset`.`id`) WHERE (playset.year = 1993 AND visibility = 1) 

si tan solo supiera como cambiar el campo a través el cual realiza el conteo de ‘id’ por ‘playsetId’( el cual es el que uso para agurpar en la otra consulta ) funcionaria(lo he probado como consulta directa), he intentado varias maneras, pero aun no ubico en donde cambio el atributo por el cual cuenta la paginacion de elementos, bueno gracias de antemano.

Como solución temporal, te recomiendo que para paginar consultas con group o having o cualquier otra consulta "compleja", uses el count de php




$models= ClassName::model()->findAll();

$cantidad=count($models);



http://www.yiiframework.com/forum/index.php?/topic/11554-active-record-count/

Seria bueno tambien si dejas ver algo del codigo que estas usando cuando creas el CActiveDataProvider y cuando creas el CPagination.

Asgaroth,

ok, aquí el ejemplo de mi código

uso el método setTotalItemCount







         	if ($agrupa) {

		$criteria->group=implode(',',$col_group);                

                $cantidad=count(CActiveRecord::model($modelClass)->findAll($criteria));

         	}


         	$models=new CActiveDataProvider($modelClass, array(

			'criteria'=>$criteria,

 	        	));

           	

                if ($agrupa)

               	$models->setTotalItemCount($cantidad);


		$this->render('show',array(

			'models'=>$models,

		));




espero te sirva

[edit]

el view







<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'consulta-grid',

	'dataProvider'=>$models,

	'columns'=>$columnas,

        'summaryText'=>'Mostrando {start}-{end} de {count}',

	)); 

?>



Hola, gracias estuve fuera de linea un rato, lo revisare y comentare que sucede, gracias.

Hola Gracias, he usado el setTotalItemCount que me recomendó Horacio, me funciona bien, la cuenta la obtuve con un countBySql (igual y cambio de método, al menos ya funciona), con una consulta similar a la que explicaba al principio, apenas he encontrado y estoy entendiendo la relación “STAT”, pero no se aun si la vaya a aplicar en este caso, de cualquier forma, así ha quedado perfecto( por ahora… :D ) Gracias.