Yii2-帮助将简单的mysql更新查询转换为活动记录代码

时间:2016-07-30 13:07:52

标签: activerecord yii2

我该如何编写此代码

UPDATE tbl_user SET status=null WHERE status=12 and id != 1

到活动记录代码 - 像这样

$model = User::find()
            ->where(['status' => 12])
            ->andWhere('id != :id', [':id' => 1])
            ->all();
$model->status = null;
$model->save();

2 个答案:

答案 0 :(得分:1)

您提供的有效记录代码似乎正确 如果代码没有保存,请尝试使用save(false)

ClassNotFoundException

如果在这种情况下保存了值,则检查验证规则..

否则你想要执行平面更新,你可以使用createCommand

 $model = User::find()
        ->where(['status' => 12])
        ->andWhere('id != :id', [':id' => 1])
        ->all();
 $model->status = null;
 $model->save(false);
在你的情况下

 $connection->createCommand()
        ->update('table_name', [SET_Values], 'CONDITION')
        ->execute();

答案 1 :(得分:0)

$connection = Yii::$app->getDb();
$connection ->createCommand()
->update('tbl_user', ['status' =>null], 'status=12 AND id != 1')
->execute();