2019独角兽企业重金招聘Python工程师标准>>>
首先描述下需求,就是我们经常用的“insert on duplicate key update”,但是在YII2框架的model里面配置些rule和insert on duplicate key update,所以不想去写原生sql的情况下,使用YII2如何来实现,具体见下面代码:
$model = Model::findOne($id);
//or $model = Model::find()->where()->one();if (!$model) {$model = new Model();
}$model->setAttribute('name', 'val');
//....
//$model->name = val;$model->save();
上述代码逻辑:
- 根据提供的条件查询对应的model的记录;
- model为null,则new一个新的model;
- 对要修改或者保存的字段进行赋值;
- 保存