使用updateAll()使用同一个表的其他列值更新表列

Tou*_*ami 7 php mysql yii2

我有一个包含这两个真正的字段的表currentorigin.

current价值定期更新.我想写一个重置脚本:对于每一行,我想把origin值放在current值中.

MySQL中,可以使用此查询:

update MyTable set current = origin
Run Code Online (Sandbox Code Playgroud)

我尝试使用查询生成器在Yii2中编写此代码:

return $this->updateAll(['current' => 'origin']);
Run Code Online (Sandbox Code Playgroud)

但是这不起作用,因为它origin被解释为字符串并且所有行都使用值更新0.

那么我如何使用另一个字段的值更新字段值updateAll()

aro*_*hev 12

origin警予\ DB \表达像这样:

use yii\db\Expression;

...

return $this->updateAll(['current' => new Expression('origin')]);
Run Code Online (Sandbox Code Playgroud)

结果将如预期的那样.