Yii2: update field with query builder
74,326
Solution 1
Query builder is for select queries only (sum, max, count too). You should use other methods - AR or raw queries (https://github.com/yiisoft/yii2/blob/master/docs/guide/db-dao.md#basic-sql-queries)
Solution 2
Create command can be used directly as follows :
\Yii::$app->db->createCommand("UPDATE table SET column1=:column1, column2=:column2 WHERE id=:id")
->bindValue(':id', your_id)
->bindValue(':column1', :column1_value)
->bindValue(':column2', :column2_value)
->execute();
Solution 3
Try like this,
Yii::$app->db->createCommand()
->update('table_name', [SET_Values], 'CONDITION')
->execute();
For Example,
Yii::$app->db->createCommand()
->update('users', ['status' => 1], 'age > 30')
->execute();
Solution 4
Also, if you need to use the column itself in the update query, you must use yii\db\Expression.
\Yii::$app->db->createCommand()
->update('user', ['visits' => new \yii\db\Expression('visits + 1')], 'age > 30')
->execute();
Solution 5
Yii::$app->db->createCommand()
->update('customer', ['otp' => $otp_rand], ['custid' => 23])
->execute();
**this is the right syntax and works & tested in yii2 **
Author by
arfname
Updated on July 11, 2020Comments
-
arfname almost 4 years
How can I update field with query builder in Yii2? I can't find this in documentation.
Thanks!
UPD
This is the solution:
// UPDATE $connection = Yii::$app->db; $connection->createCommand()->update('user', ['status' => 1], 'age > 30')->execute();