Yii Framework Forum: Condición en el having que no está siendo tomada por el paginador - Yii Framework Forum

Jump to content

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

Condición en el having que no está siendo tomada por el paginador Rate Topic: -----

#1 User is offline   juanmjimenezs 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 15-May 09
  • Location:Colombia

Posted 17 August 2010 - 10:18 AM

Hola muchachos, lo que sucede es que en un criteria estoy colocando una condición en el having "$criteria->having" y los resultados de búsqueda me salen bien, es decir, se aplica la condición que coloco en el having, pero el paginador no me toma esa condición del having y me indica que hay más registros de los que en realidad hay.

Alguien sabe como puedo solucionar esto?
0

#2 User is offline   sebas 

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

Posted 17 August 2010 - 10:35 AM

Podés postear el código que estas utilizando?

Gracias,
1

#3 User is offline   juanmjimenezs 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 15-May 09
  • Location:Colombia

Posted 17 August 2010 - 10:41 AM

View Postsebas, on 17 August 2010 - 10:35 AM, said:

Podés postear el código que estas utilizando?

Gracias,


Sip, quitando algunas validaciones el código es el siguiente:

$criteria = new CDbCriteria;
$criteria->with = array('relProPgd', 'relProPec');;
$select = array();

$select[] = "funct_prop_available(t.pro_code,'{$dateSince}','{$dateTo}',if(prt_code=1,relProPec.pec_hole,0)) AS pro_available";
$criteria->having = "pro_available = 0";

$select[]= 'pro_code';
$select[]= 'pro_name';
$select[]= 'prt_code';
$select[]= 'pro_url';
$criteria->select = $select;

//Aquí se obitnen los datos de las propiedades que encajan con los parametros de busqueda segun el criteria.
$properties = new CActiveDataProvider('Property', array(
    'criteria'=>$criteria,
    'pagination'=>array(
        'pageSize'=>self::PAGE_SIZE,
    ),
));

    $this->render('apartmentSearchResult', array(
    				'propertiesData'=>$properties->getData(),
    				'propertiesPagination'=>$properties->getPagination(),
    ));



El having lo hago sobre lo que me retorna la función que incluyo en el select y funciona, es decir, se aparecen la cantidad de resultados correctos, pero en el objeto pagination no aparece la cantidad correcta de datos y ya probé haciendo el count y el count tampoco me muestra bien la cantidad de datos:

echo Property::model()->with('relProPgd','relProPec')->count($criteria);


Nota: la versión que estoy utilizando es yii-1.1.2.r2086

This post has been edited by juanmjimenezs: 17 August 2010 - 10:44 AM

0

#4 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 17 August 2010 - 11:01 AM

Hasta donde se hay un bug con el count y el having:
Issue 1244

Supongo que será solucionado en alguna version futura...
Don't say what you think, think what you say
The problem is communication! Excess of communication!
1

#5 User is offline   juanmjimenezs 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 15-May 09
  • Location:Colombia

Posted 17 August 2010 - 11:35 AM

View PostPoL, on 17 August 2010 - 11:01 AM, said:

Hasta donde se hay un bug con el count y el having:
Issue 1244

Supongo que será solucionado en alguna version futura...


Gracias PoL por tu respuesta. :unsure: ... ojalá arreglen eso pronto... por ahora trataré entonces de ver como me las ingenio para solucionar el problema así no se vea bonito. :(
0

#6 User is offline   juanmjimenezs 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 15-May 09
  • Location:Colombia

Posted 18 August 2010 - 07:23 AM

Hola muchachos, quería comentarles como lo solucioné, resulta que como el problema está es en el count(), entonces lo que hice fue que al crear el objeto pagination no hice el count como habitualmente se hace sino que hice un count de PHP de la siguiente forma:

$pages = new CPagination(count(Property::model()->findAll($criteria)));
$pages->pageSize = self::PAGE_SIZE;
$pages->applyLimit($criteria);
			
$models = Property::model()->findAll($criteria);


Claro, esta es una solución temporal mientras el equipo de desarrollo soluciona el problema del count con el having.
0

#7 User is offline   sebas 

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

Posted 18 August 2010 - 02:11 PM

Yo te iba a decir eso, pero que podías solucionarlo utilizando el CountBySql.... pero al usar el activeDataProvider, no vas a poder...

Se que este bug es uno en los que mas está trabajando samdark por lo que proximamente estará solucionado. No tenemos estimado cuando.

También estamos trabajando mucho con la nueva versión de Yii, la 1.2, definiendo las cosas que se agregan y las que se sacan.

Saludos
1

#8 User is offline   juanmjimenezs 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 15-May 09
  • Location:Colombia

Posted 25 August 2010 - 02:32 PM

View Postsebas, on 18 August 2010 - 02:11 PM, said:

Yo te iba a decir eso, pero que podías solucionarlo utilizando el CountBySql.... pero al usar el activeDataProvider, no vas a poder...

Se que este bug es uno en los que mas está trabajando samdark por lo que proximamente estará solucionado. No tenemos estimado cuando.

También estamos trabajando mucho con la nueva versión de Yii, la 1.2, definiendo las cosas que se agregan y las que se sacan.

Saludos


Genial, muchas gracias Sebas.
0

#9 User is offline   quarkmarino 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 11-August 10
  • Location:México

Posted 19 September 2010 - 07:13 AM

Justo tengo el mismo problema, pero con un 'group by', por lo que el paginator hace eso que dices de contar mas registros, bueno esperemos que se solucione pronto.
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