gpt4 book ai didi

php - Eloquent:在模型和他的 parent 身上 Hook 到 'saving' 事件

转载 作者:可可西里 更新时间:2023-11-01 00:13:39 25 4
gpt4 key购买 nike

有这个 parent :

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() 才会执行。我两个都需要!

最佳答案

我找到了解决方案,其实很简单。

这是 *ing Eloquent 事件的行为,取决于返回类型:

  • return null or no return:模型将被保存或执行下一个saving回调
  • return true:模型将被保存,但下一个saving回调将NOT被执行
  • 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
});
}
}

关于php - Eloquent:在模型和他的 parent 身上 Hook 到 'saving' 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29778912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com