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源码有介绍
这样应该可以