Yii Framework Forum: Cdbcriteria Se Salta Las Condiciones - Yii Framework Forum

Jump to content

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

Cdbcriteria Se Salta Las Condiciones Rate Topic: -----

#1 User is offline   RTJ 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 42
  • Joined: 04-May 12

Posted 27 December 2012 - 04:14 AM

Hola a todos,
Soy nuevo en Yii.
Y me he encontrado con un problema, CDbCriteria se salta las primeras condiciones solo me funciona el order.
Es muy probable que simplemente no estoy usando "condition" correctamente.
Podrían decirme que es lo que tengo mal ?

Muchas gracias de antemano.

public function actionIndex($c=null,$p=null,$o=null)
    {

        $criteria=new CDbCriteria();
    if (isset($c)){
        $criteria->condition='categoria=:categoria';
        $criteria->params=array(':categoria'=>$c);
    }
    if (isset($p)){
        $criteria->condition='provincia=:provincia';
        $criteria->params=array(':provincia'=>$p);
    }
        $criteria->condition='activa=:activa';
        $criteria->params=array(':activa'=>1);
    if (isset($o) and $o==1){
        $criteria->order = "preciodesde ASC";
    }
    if (isset($o) and $o==2){
            $criteria->order = "preciodesde DESC";
        }
    if (isset($o) and $o==3){
        $criteria->order = "vip ASC";
        $criteria->order = "vip_precio DESC";
        $criteria->condition='vip=:vip';
        $criteria->params=array(':vip'=>1);
    }

        $count=Empresa::model()->count($criteria);
        $pages=new CPagination($count);

        // results per page
        $pages->pageSize=10;
        $pages->applyLimit($criteria);

0

#2 User is offline   robregonm 

  • Experienced Yii Developer
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 602
  • Joined: 30-July 09
  • Location:Colombia

Posted 28 December 2012 - 09:26 AM

El error que veo es de concepto...
Recuerde que, como cualquier variable, los atributos "order, condition, params" y demás, se sobreescriben al hacerse una asignación... Entonces lo que está sucediendo es que se está "anulando" la asignación anterior con los últimos datos.

Saludos.
Ricardo Obregón
LinkedIn Profile
YiiFramework en Español - http://yiiframework.co/ - Yii Code Generator for Bootstrap
http://obregon.co/ - https://1server.co/
PHP 5.5+, nginx, MySQL, PostgreSQL, Yii 1.x & 2.x, CanJS and more.
Follow me: @robregonm & @obregonco & @1ServerCo.
0

#3 User is offline   lagogz 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 478
  • Joined: 30-November 12
  • Location:Galiza

Posted 22 January 2013 - 10:35 AM

robregonm tiene razón. Lo que estás haciendo es sobreescribiendo las condiciones.

Usa el método addCondition() de CDbCriteria para añadir condiciones a las ya existentes.

Por ejemplo:

$criteria->addCondition('FieldName = xxxxx', 'AND');


Un saludo.
-----------------------------------------------------------------------------------------------
------------------------------- VISITEN FOCUCHASART --------------------------------
-----------------------------------------------------------------------------------------------
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