Laravel模型事件don';不要开火


Laravel Model Events don't fire

我有一个带有以下代码的模型:

<?php
 use Illuminate'Database'Eloquent'SoftDeletingTrait;
 class Intervention extends Eloquent {
    use SoftDeletingTrait;
    protected $fillable = array('start_date','stove_id','description','operation_mode','store_id','user_id','intervention_status_id','code');
    public function operations()
    {
        return $this->hasMany('InterventionOperation');
    }
    public function store()
    {
      return $this->belongsTo('Store');
    }
    public function stove()
    {
      return $this->belongsTo('Stove');
    }
    public function user()
    {
      return $this->belongsTo('User');
    }
    public function statues()
    {
      return $this->hasMany('InterventionStatus');
    }

然后启动

    public static function boot()
    {
        parent::boot();
        static::creating(function($intervention)
        {
          exit("creating");
        });
        static::created(function($intervention){
          exit("created");
        });
        static::updating(function($intervention)
        {
          exit("updating");
        });
    }

控制器:

$intervention = new 'Intervention('Input::all());
$status = 'Status::find('Input::get('status')['id']);
$interventionStatus = new 'InterventionStatus();
$interventionStatus->change_status_date = new 'DateTime();
$interventionStatus->status()->associate($status);
$interventionStatus->description = "";
$user = 'Auth::user();
$store = $user->store;
$intervention->store()->associate($store);
$intervention->user()->associate($user);
$intervention->request_date = new 'DateTime();
$intervention->save();
...

但在保存模型时,不调用创建回调。

我尝试将exit("test")放在parent::boot()之后;并且触发退出。

如果我把事件的代码放在app/start/global.php中,它就可以工作了。

我已经尝试在另一个模型中使用该代码并工作。我不知道为什么它不起作用。

已解决:

我重新创建了数据库,现在一切正常。也许,在各种拯救尝试中,有些关系被跳过了。谢谢大家的帮助!

我认为这与名称空间和在事件中注册正确的类有关。让我们破解一下源代码:)

在:/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php

添加:

public function getAllEvents()
{
    return array_keys($this->listeners);
}

并调用/转储Event::getAllEvents();在这两种情况下(在模型和global.php中启动)都尝试这样做,并进行比较。