2017-05-18 1 views
0

내 사용자 테이블에서 나는 이름이 검증 된 컬럼과 디폴트 값 'false'를 가진 데이터 타입 boolean을 가지고있다. 그러나 특정 사용자의 컬럼 값이 'true'로 바뀌면 이벤트를 발생시키고 자한다. 해당 이벤트를 기반으로 알림을 만드시겠습니까? 어떻게하면이 아이디어를 얻을 수 있습니까?Laravel : 사용자 테이블의 특정 열이 변경 될 때 이벤트를 발생시키는 방법은 무엇입니까?

답변

1

모델 이벤트에 후크를 추가하고 검사를 수행 할 수 있습니다. 아래 코드는 모델에서 사용됩니다. 이벤트와 함께 사용자 객체를 전달할 수도 있고하지 않을 수도 있습니다. 알림을 전송하는 경우이 방법이 유용 할 수 있습니다.

public static function boot() 
{ 
    parent::boot(); 

    static::updated(function($user) { 
     if ($user->verified == true) { 
      event(new UserVerified($user)); 
     } 
    }); 
} 
+0

감사합니다. 이 아이디어를 구현하는 좋은 방법 인 것 같습니다. 그러나 이것이 최선의 방법인지는 확신 할 수 없습니다. 다시 감사합니다. –

+1

이것은 모델 데이터의 변경 사항을 감지 할 수있는 유일한 방법입니다. 동일한 작업을 수행하는 관찰자를 사용하여 구현할 수도 있지만 논리는 다른 클래스로 이동합니다. 또 다른 방법은 업데이트 할 때 컨트롤러에서 이벤트를 감지하고 실행하는 것입니다. 그러나 여러 위치에서 모델을 업데이트하면이 작업이 번거로워집니다. – Sandeesh

0

내가 생각하는 바는 목표 테이블을 업데이트 할 때 트리거를 만드는 것입니다. 업데이트시 다른 테이블에 레코드를 삽입 할 수 있습니다 EVENT.

코드를 EVENT 테이블에서 주기적으로 폴링하여 이러한 업데이트를 처리 할 수 ​​있습니다.

Oracle DB를 사용하는 경우 Oracle queues이 매우 유용합니다.