Cdbcriteria Se Salta Las Condiciones

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



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.

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.