arf*_*ame 27 updating query-builder yii2
如何在Yii2中使用查询构建器更新字段?我在文档中找不到这个.
谢谢!
UPD
这是解决方案:
// UPDATE
$connection = Yii::$app->db;
$connection->createCommand()->update('user', ['status' => 1], 'age > 30')->execute();
Run Code Online (Sandbox Code Playgroud)
Ksh*_*tiz 19
创建命令可以直接使用如下:
\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();
Run Code Online (Sandbox Code Playgroud)
小智 12
"查询"构建器仅用于选择查询(sum,max,count).您应该使用其他方法 - AR或原始查询(https://github.com/yiisoft/yii2/blob/master/docs/guide/db-dao.md#basic-sql-queries)
试试这样,
Yii::$app->db->createCommand()
->update('table_name', [SET_Values], 'CONDITION')
->execute();
Run Code Online (Sandbox Code Playgroud)
例如,
Yii::$app->db->createCommand()
->update('users', ['status' => 1], 'age > 30')
->execute();
Run Code Online (Sandbox Code Playgroud)
此外,如果需要在更新查询中使用列本身,则必须使用yii\db\Expression.
\Yii::$app->db->createCommand()
->update('user', ['visits' => new \yii\db\Expression('visits + 1')], 'age > 30')
->execute();
Run Code Online (Sandbox Code Playgroud)