根据 laravel eloquent event 的文档,所有 eloquent 事件都是基于每个模型单独触发的,有没有办法使用“创建”事件或任何其他 eloquent 事件由所有模型触发
例如,如果创建了任何模型,则触发事件 A
根据 laravel eloquent event 的文档,所有 eloquent 事件都是基于每个模型单独触发的,有没有办法使用“创建”事件或任何其他 eloquent 事件由所有模型触发
例如,如果创建了任何模型,则触发事件 A
监听触发的 Eloquentcreating
事件。这是一个“字符串”事件,仍然不是一个对象,所以你可以在这里做一些...通配符匹配。
这是从 Eloquent 触发的事件字符串:
"eloquent.{$event}: ".static::class
因此,您可以侦听“eloquent.creating: *”来捕获所有这些字符串事件,以便为任何模型创建 Eloquent。
Event::listen('eloquent.creating: *', function ($event, $model) {
....
});
显然,如果您已将模型定义为使用自定义事件对象,则将无法捕获这些对象。
您也可以创建一个模型观察者,但是您必须将它注册到您想要为其捕获事件的应用程序中的每个模型。
扩展模型类:
use Auth;
use Illuminate\Database\Eloquent\Model;
class GeneralModel extends Model
{
public static function boot()
{
parent::boot();
static::creating(function ($model) {
if (Auth::user()) {
$model->created_by = Auth::user()->id;
$model->updated_by = Auth::user()->id;
}
});
}
}
当你说创建一个说property
对象时,它会被触发。将它用于您需要的所有模型。
class Property extends GeneralModel
{
//..
}