2014-10-23 3 views
0

필자가 본 "우수 사례"의 다양한 권장 사항을 따르기로 결정했으며 관련 모델의 Model::boot 코드에 Event::listen 코드를 넣습니다. 이것은 이들 중 6 개에 완벽하게 작동하며 다른 사람들을 위해 완전히 실행되지 않습니다. Laravel 4.1 Model :: boot 항상 실행되지 않는 경우

모든

는 (다시 \Illuminate\Database\Eloquent\Model를 확장) 같은 기본 클래스

모든 나는, 모두가 여러 청취자에 문제가 아니에요 같은 \Event::listen('event',function(){}); 형식

를 사용

public static function boot() 방법을 사용에서 연장 두 모델을 동일한 작업 모델에 넣을 수 있으며 두 모델 모두 트리거되지만 아무 것도 작동하지 않는 모델에서는 트리거되지 않습니다.

내가 오류가 기록되지,

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."); 
    }); 
    } 
} 

없음 예외

가 슬로우되는,별로 - 책 코드 (내 지식의 최선을) 사용하고,에 붙여 심지어는 코드가 아니라, 그것은 단지 실행되지 않습니다. 나는 "작동하는"모델 중 하나에 코드 &을 넣을 수 있으며 예상대로 정확하게 작동 할 것입니다.

내가 모르는 어렴풋한 문제 나 뉘앙스가 있습니까? 이 불일치는 미친 짓이다.

+2

코드에서 실제로 해당 모델을 사용하고 있습니까? Laravel 게으른 자동로드 - 그래서 나는 그것이 필요할 때까지 모델을 부팅 할 것이라고 생각하지 않습니까? (나는 100 % 확신 할 수 없다.) – Laurence

+0

오, 젠장. 거대한 모델 더미가 있지만, 화재를 청취하는 이벤트가있을 때 어떤 주어진 이벤트가 이미 사용되었다는 보장은 없습니다. 그것은 실망 스럽습니다. 이벤트를 분류하는 완벽한 방법 일 것입니다. –

+1

잠시만 기다려주십시오. 모델 내부의 모델 이벤트를 모니터링하고 있습니까? 또는 모델 내에서 전체 응용 프로그램 이벤트를 모니터링하려고합니까? 나중에 할려고하는 것 같아? – Laurence

답변

1

코드에서 실제로 해당 모델을 사용하고 있습니까? Laravel 게으른 자동로드 - 그래서 나는 그것이 필요할 때까지 모델을 부팅 할 것이라고 생각하지 않습니까?