Yii2:使用查询构建器更新字段

时间:2014-08-24 07:56:57

标签: updating query-builder yii2

如何在Yii2中使用查询构建器更新字段?我无法在文档中找到它。

谢谢!

UPD

这是解决方案:

// UPDATE
$connection = Yii::$app->db;
$connection->createCommand()->update('user', ['status' => 1], 'age > 30')->execute();

6 个答案:

答案 0 :(得分:18)

创建命令可以直接使用如下:

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

答案 1 :(得分:12)

“查询”构建器仅用于选择查询(sum,max,count)。您应该使用其他方法 - AR或原始查询(https://github.com/yiisoft/yii2/blob/master/docs/guide/db-dao.md#basic-sql-queries

答案 2 :(得分:6)

试试这个,

 Yii::$app->db->createCommand()
        ->update('table_name', [SET_Values], 'CONDITION')
        ->execute();

例如,

 Yii::$app->db->createCommand()
             ->update('users', ['status' => 1], 'age > 30')
             ->execute();

答案 3 :(得分:6)

此外,如果您需要在更新查询中使用列本身,则必须使用yii \ db \ Expression。

\Yii::$app->db->createCommand()
    ->update('user', ['visits' => new \yii\db\Expression('visits + 1')], 'age > 30')
    ->execute();

答案 4 :(得分:2)

 Yii::$app->db->createCommand()
         ->update('customer', ['otp' => $otp_rand], ['custid' => 23])
         ->execute();

**这是正确的语法和工作&在yii2 **

中测试

答案 5 :(得分:1)

  

如果你有mpre那么一个条件然后使用这个

$this->localdb->createCommand()
    ->update(
        $this->MYTable,
        [
            'name' => $el['new'],
            'data' => $el['data'],
        ],
        [
            'userId' => $this->user,
            'product_id' => $this->productId,
            'name' => $el['old'],
            'created' => $el['date'],
            'category' => $el['cat'],
        ]

    );