requerimientos instalar framework espaƱol documentacion descargar php mysql yii sql-update

php - instalar - Actualizar consulta en Yii



yii2 github (3)

Esto debería hacer el trabajo:

Post::model()->updateCounters( array(''star''=>1), array(''total''=>$ratingAjax), array(''condition'' => "id = :id"), array('':id'' => $post_id), );

Incrementará, no establecerá los valores

Tengo un requisito en Yii donde tengo que actualizar una tabla basada en alguna condición. Y tengo que actualizar la columna con new_val = previous_value + new_val . Pero el código no está funcionando como se esperaba.

El código que probé es

$update = Yii::app()->db->createCommand() ->update(''tbl_post'', array(''star''=>(''star'' + 1),''total''=>(''total'' + $ratingAjax)), ''id=:id'',array('':id''=>$post_id));

En la consulta normal, la consulta será

UPDATE tbl_post set star= star + 1,total = total + ''$ratingAjax'' where id = 1

¿Alguien sabe dónde está el error?


Pruebe lo siguiente:

$update = Yii::app()->db->createCommand() ->update(''tbl_post'', array( ''star''=>new CDbExpression(''star + 1''), ''total''=>new CDbExpression(''total + :ratingAjax'', array('':ratingAjax''=>$ratingAjax)) ), ''id=:id'', array('':id''=>$post_id) );

El uso de CDbExpression le permitirá enviar una expresión para qué actualizar el valor de la columna.

Ver: http://www.yiiframework.com/doc/api/1.1/CDbCommand#update-detail

y: http://www.yiiframework.com/doc/api/1.1/CDbExpression# __construct-detail


Tu trabajando con cadenas, prueba esto:

$update = Yii::app()->db->createCommand() ->update(''tbl_post'', array(''star''=>''star + 1'',''total''=> ''total + ''.$ratingAjax), ''id=:id'',array('':id''=>$post_id));