Yii Framework Forum: CActiveDataProvider y Consultas erroneas - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

CActiveDataProvider y Consultas erroneas Rate Topic: -----

#1 User is offline   Jack Fiallos 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 256
  • Joined: 15-October 09
  • Location:Mexico

Posted 20 September 2010 - 11:40 PM

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 ??
Celestic Dev Team
Yii Open Source Project Manager
0

#2 User is offline   sebas 

  • Advanced Member
  • Yii
  • Group: Yii Dev Team
  • Posts: 496
  • Joined: 28-October 08
  • Location:Buenos Aires, Argentina

Posted 21 September 2010 - 12:17 AM

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
0

#3 User is offline   Jack Fiallos 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 256
  • Joined: 15-October 09
  • Location:Mexico

Posted 21 September 2010 - 12:48 AM

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
Celestic Dev Team
Yii Open Source Project Manager
0

#4 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 21 September 2010 - 05:59 AM

View PostJack Fiallos, on 21 September 2010 - 12:48 AM, said:

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.yiiframew...as-relacionales


KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#5 User is offline   Jack Fiallos 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 256
  • Joined: 15-October 09
  • Location:Mexico

Posted 21 September 2010 - 08:12 AM

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'),
    ),
));

Celestic Dev Team
Yii Open Source Project Manager
0

#6 User is offline   Jack Fiallos 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 256
  • Joined: 15-October 09
  • Location:Mexico

Posted 21 September 2010 - 11:18 PM

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..
Celestic Dev Team
Yii Open Source Project Manager
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users