yii2的model能做互换表中两列数据吗 [ 2.0 版本 ]
效果与与这条sql语句差不多update product as a, product as b set a.original_price=b.price, a.price=b.original_price where a.id=b.id
用ActiveRecord怎么实现,谢谢大家了
共 2 个回答
-
我猜啊,可以这样
$models = Product::find()->all(); foreach($models as $model) { $tmp = $model->price; $model->price = $model->original_price; $model->original_price = $tmp; $model->update(false); }
或者
模型里
修改Product.phppublic static function tableName() { return 'product AS a, product As b'; }
控制器里
$result = Product::updateAll(['a.original_price' => 'b.price', 'a.price' => 'b.original_price'], 'a.id=b.id');
这个我试了,不管用,多个'号不过还是推荐楼上说的,一个createCommand就能解决,不能片面为了追求代码统一,主要是想用活动记录必须修改底层代码,但是得不偿失,嗯,好像这样的。。。
wsd15321
注册时间:2017-11-08
最后登录:2019-06-13
在线时长:3小时12分
最后登录:2019-06-13
在线时长:3小时12分
- 粉丝0
- 金钱255
- 威望20
- 积分485