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

时间:2015-02-04 18:39:19

标签: php mysql yii2

我的表格包含这两个真实字段currentorigin

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

MySQL 中,可以使用此查询:

update MyTable set current = origin

我尝试使用查询构建器在Yii2中编写它:

return $this->updateAll(['current' => 'origin']);

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

那么我如何使用updateAll()

按另一个字段的值更新字段值

1 个答案:

答案 0 :(得分:9)

origin包裹在yii\db\Expression中,如下所示:

use yii\db\Expression;

...

return $this->updateAll(['current' => new Expression('origin')]);

,结果将如预期一样。