拥有这个父母:
class BaseModel extends Eloquent {
protected static $rules = [];
public static function boot() {
parent::boot();
static::saving(function($model) {
return $model->validate(); // <- this executes
});
}
}
我怎样才能在儿童模特身上做同样的事情?
class Car extends BaseModel {
protected static $rules = [];
public static function boot() {
parent::boot();
static::saving(function($model) {
$model->doStuff(); // <- this doesn't execute
});
}
}
如果我删除父项上的saving()
,则只会执行子项中的saving()
。我需要两个!
答案 0 :(得分:8)
我找到了解决方案,实际上非常简单。
以下是*ing
Eloquent事件的行为,具体取决于返回类型:
return null
或no return
:模型将被保存或下一个saving
回调将被执行return true
:模型将被保存,但下一个saving
回调将不执行return false
:不会保存模型,也不会执行下一个saving
回调因此,解决这个问题的方法很简单:
class BaseModel extends Eloquent {
protected static $rules = [];
public static function boot() {
parent::boot();
static::saving(function($model) {
if(!$model->validate())
return false; // only return false if validate() fails, otherwise don't return anything
});
}
}