由于需要封装一些数据库映射方法,所以我用一个mapper继承了Yii2生成的model
由于update时使用了静态的findOne方法
$o = ConfigMapper::findOne(1); $o->v = '1112'; $o->save();
这样会导致返回的是model的实例而不是mapper,从而使得编写在mapper中的beforeValidate方法在更新时不会触发
所以我们需要重写findOne方法:
public function getOne($condition) { $response = new MapperResponse(); $result = static::findOne($condition); return $response->setResponse2Success($result); } ...