CActiveDataProvider y Consultas erroneas

Que sucede con el CActiveDataProvider que al hacer una consulta relacional que pasa por al menos 3 tablas, este no genera el resultado que quiero…

Yo se que la consulta esta bien porque en el debuger veo que antes cuando se utiliza CActiveDataProvider la primer consulta es un count() y la segunda es la de registros… pero por alguna razon la consulta del count() se hace bien y la de registros la hace incompleta…

Miren este codigo y diganme si me hace falta algo o estoy ante la presencia de un bug-sototote

Consulta que genera el Count() – esta se hace bien


SELECT COUNT(DISTINCT `t`.`user_id`) 

FROM `tb_users` `t` 

LEFT OUTER JOIN `tb_clients` `Clients` ON (`Clients`.`user_id`=`t`.`user_id`) 

LEFT OUTER JOIN `tb_companies_has_tb_users` `Companies_Companies` ON (`t`.`user_id`=`Companies_Companies`.`user_id`) 

LEFT OUTER JOIN `tb_companies` `Companies` ON (`Companies`.`company_id`=`Companies_Companies`.`company_id`) 

LEFT OUTER JOIN `tb_projects` `Projects` ON (`Projects`.`company_id`=`Companies`.`company_id`) 

WHERE (Projects.project_id = :project_id AND Clients.client_id IS NULL)



Consulta de seleccion de registros – vean como solamente enlace a una tabla y las demas que ???


SELECT 

`t`.`user_id` AS `t0_c0`, 

`t`.`user_name` AS `t0_c1`, 

`t`.`user_lastname` AS `t0_c2`, 

`t`.`user_email` AS `t0_c3`, 

`Clients`.`client_id` AS `t1_c0`, 

`Clients`.`user_id` AS `t1_c1` 

FROM `tb_users` `t` 

LEFT OUTER JOIN `tb_clients` `Clients` ON (`Clients`.`user_id`=`t`.`user_id`) 

WHERE (Projects.project_id = :project_id AND Clients.client_id IS NULL) 

ORDER BY t.user_name LIMIT 10

Saben porque sucede esto o estoy haciendo algo mal ??

Cuando uno hace un limit, no puede hacer algunas relaciones de muchos a muchos que si puede hacer en el count…

Eso es porque sino el limit debe calcular y no hacerlo todo junto.

Si querés podés usar la función together…

Creo que este es tu problema.

Fijate que después si lo puede hacer…

Cualqueir cosa avisame

lastima… together no hace nada… sigue sin describir las relaciones con las demas tablas… pero entonces si lo que dices es cierto… tendría que separar la consulta en 2 partes… y llevarla hasta lo mas sencillo para el CActiveDataProvider

que parametros le pasas al with?

puede ser que este haciendo lazy loading?

http://www.yiiframework.com/doc/guide/es/database.arr#ejecutando-consultas-relacionales

la consulta la aplico utilizando "eager loading" … y se ve como esto:




$dataProvider = new CActiveDataProvider('Users', array(

    'criteria'=>array(

        'condition'=>'Projects.project_id = :project_id AND Clients.client_id IS NULL',

		'params'=>array(

			':project_id'=>$_GET['id'],

		),

        'order'=>'t.user_name',

        'with'=>array('Clients','Companies.Projects'),

    ),

));



El problema ha quedado resuelto… hice una actualizacion del framework de la version yii-1.1.3.r2247 a la version yii-1.1.4.r2429 y con eso las consultas ya las genera bien…

Gracias por el rato que estuvieron conmigo tratando de encontrar el porque del error…