谁一开始就是大神?

ActiveRecord做一个特殊的更新操作,[2.0]

Model::update 更新一个表, 有一个字段a是有一个特殊需求, 如果满足条件X, 就把这个字段置为0, 不满足就不更新.
现在的写法是

if(x){
    Model::updataAll(['b'=>0, a=>0]);
}else{
    Model::updataAll(['b'=>0]);
}

有没有方法把这个语句简化一下, 类似于下面这种, 但是测试发现当条件X不满足的时候, a=>a这样写是有问题的, 试过a=>’a’也不行, 这种语句该怎么写
Model::updateAll(['b'=>0, a=>(X?0:a)]);

根据你的需求 有一个字段a是有一个特殊需求, 如果满足条件X, 就把这个字段置为0, 不满足就不更新.
如果X不是Model数据表的字段,可以这么写if (满足条件X) {Model::updateAll([‘b’ => 0] )};
如果X是Model数据表的字段,可以这么写 Model::updateAll([‘b’ => 0], ‘X’ => $condition);
详见yii\db\ActiveRecord::updateAll源码有介绍
这样应该可以

赞(0) 打赏
未经允许不得转载:菜鸟之家 » ActiveRecord做一个特殊的更新操作,[2.0]

评论 抢沙发

登录

找回密码

注册