菜鸟常忽略的地方 - 不要重写beforeSave ¶
作者:KK
发表日期:2017.3.25
不要随便重写beforeSave ¶
不时会在群里看到一些菜鸟企图重写AR模型父类的public function beforeSave($insert)
方法来在save方法执行之前做一些事
其实这是不正确的行径,官方在beforeSave里是已经设定了一些执行代码的,不要随便去改动它
应该监听BaseActiveRecord::EVENT_BEFORE_INSERT
和BaseActiveRecord::EVENT_BEFORE_UPDATE
两个事件来实现入库前的逻辑
要在insert或update前做事情应该监听事件 ¶
也是因为很多新手不了解事件这个知识点所以没有想到用事件监听
要在模型insert或update前做自己的事其实是这样用事件的:
$user = new User([
'name' => 'Jay'
'age' => 17
]);
$user->on(User::EVENT_BEFORE_INSERT, function(){
echo '准备insert了';
});
$user->save(); // 准备insert了
$user2 = User::findOne(111);
$user2->on(User::EVENT_BEFORE_UPDATE, function(){
echo '准备update了';
});
$user2->save(); // 准备update了