我决定遵循我见过的各种“最佳做法”建议,并将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.");
});
}
}
没有抛出异常,没有记录错误,它只是不运行。我可以将代码解压缩到一个“工作”模型中,它将完全按预期工作。
我是否遗漏了一些模糊的问题或细微差别?这种不一致令人抓狂。
答案 0 :(得分:1)
您是否在代码中实际使用该模型? Laravel懒惰的自动加载 - 所以我不认为它会在需要之前启动模型?