Laravel 4.1 Model :: boot并不总是开火

时间:2014-10-23 04:45:27

标签: laravel laravel-4

我决定遵循我见过的各种“最佳做法”建议,并将Event::listen代码放在相关模型的Model::boot静态方法中。这对于其中的六个完全无效,完全无法为其他人执行。

所有扩展自相同的基类(反过来扩展\Illuminate\Database\Eloquent\Model

全部使用public static function boot()方法

所有使用相同的\Event::listen('event',function(){});格式

这对多个侦听器来说不是问题,我可以将两个放在同一个工作模型中并且它们都触发,但是没有一个会在非工作模式中触发。

甚至没有任何代码可以粘贴,我使用的是书本(据我所知)代码,

class MyClass extends \Illuminate\Database\Eloquent\Model
{
  public static function boot()
  {
    \Event::listen('my.event', function($arg1, $arg2){
      \Log::debug("This may or may not trigger.");
    });
  }
}

没有抛出异常,没有记录错误,它只是不运行。我可以将代码解压缩到一个“工作”模型中,它将完全按预期工作。

我是否遗漏了一些模糊的问题或细微差别?这种不一致令人抓狂。

1 个答案:

答案 0 :(得分:1)

您是否在代码中实际使用该模型? Laravel懒惰的自动加载 - 所以我不认为它会在需要之前启动模型?