首先描述下需求,就是我们经常用的“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;
- 对要修改或者保存的字段进行赋值;
- 保存