Php 发射同一模型事件两次

Php 发射同一模型事件两次,php,laravel,eloquent,Php,Laravel,Eloquent,我正在处理以下代码: //基本模型 抽象类BaseModel扩展了雄辩的{ 公共静态函数boot() { 父::boot(); 静态::保存(函数($model) { 回声“发射的基本模型”; }); } } //项目(扩展BaseModel) 类项目扩展了BaseModel{ 公共静态函数boot() { 父::boot(); 静态::保存(函数($model) { echo“被解雇的项目”; }); } } 在将新/现有数据保存到项目模型时,这只会为我提供Fired BaseModel。它

我正在处理以下代码:

//基本模型
抽象类BaseModel扩展了雄辩的{
公共静态函数boot()
{
父::boot();
静态::保存(函数($model)
{
回声“发射的基本模型”;
});
}
}
//项目(扩展BaseModel)
类项目扩展了BaseModel{
公共静态函数boot()
{
父::boot();
静态::保存(函数($model)
{
echo“被解雇的项目”;
});
}
}

在将新/现有数据保存到项目模型时,这只会为我提供
Fired BaseModel
。它根本不会在项目模型上触发保存事件。有什么方法可以克服这个限制吗?

在调用父事件之前先触发子事件应该可以解决它

// Project (extends BaseModel)
class Project extends BaseModel {
    public static function boot()
    {   
        static::saving(function($model)
        {
            echo 'Fired Project';
        });

        parent::boot();
    }
}

问题是我需要先处理BaseModel中的代码。你在BaseModel中实际做什么?您实际上是在尝试回显什么,还是实际执行什么?尝试在基本模型和子模型中放置一个Log(),它应该可以工作。不要回应-这可能会扼杀事件进程…实际上正在做一些事情。诸如模型授权、验证、自定义事件触发、事务日志记录等。在父事件中,您是否“返回”?如果您“返回”,它将立即停止引导过程。你需要让它贯穿整个过程。在我的基本模型中进行验证时,我遇到了同样的问题-我无法理解为什么我的子事件从未触发-这是因为我“返回”验证为true!