2014-12-06 1 views
0

내 목표는 사용자가 username 또는 email을 업데이트 할 때 활동 로그를 추적하는 것입니다.사용자 활동 로그를 만드는 방법은 무엇입니까?

나는 내 데이터베이스에 users 테이블은 다음과 같이 배치 한 :

  • ID
  • 이름
  • 내가 포함하는 logs 테이블을 생성하기로 결정

이메일 :

  • 이름
  • username_new
  • 이메일
  • email_new
  • created_at
  • 수의학 연구의 무리를 수행 한 후 USER_ID

은, 어떤 사람들은 나를 Event::fireEvent::listen를 사용하도록 제안.

그래서 ... 나는 잠시 동안 this을 계속해서 보았습니다.

나는 이것을 얻었다.

사용자가 취하는 각 동작에 대해 이벤트를 발생시켜야합니다.

$event = Event::fire(‘user.log’, array($user)); 

Event::listen(‘user.log’, function($user) 
{ 

$log->username = $user->username; 
$log->username_new = Input::get(‘username’); 
$log->email = $user->email; 
$log->email_new = Input::get(‘email’); 
$log->created_at = Input::get('created_at'); 
$log->user_id = $user->id; 

$log->save(); 

}); 

내가 app/start/global.php 또는 app/events.php에이 코드를 넣어 것을 알고


.

음, 나는 Laravel에게 NEW입니다. 하지만 나는 "모든 예술가는 한 때 아마추어였다"고 믿었습니다 - 맞습니까?

내 접근 방식이 잘 작동하는지 잘 모르겠습니다. 그러나 나는 누군가가 완전히 잘못한 것을 지적하거나, 아마도 아무것도 잊어 버릴 수 있다고 지적 할 수 있기를 바랍니다.

내가하고있는 일은 논리적으로 의미가 있습니까?

HUGE thanks이 질문에 공헌 한 모든 사람에게!

+0

귀하의 질문이 무엇인지 잘 모르겠습니다. 제안 된 솔루션을 테스트 해 보셨습니까? – Joe

+0

내가하고있는 일이 논리적으로 의미가있는 것입니까? – iori

+0

예, 로깅 클래스 [Laravel 4 내장] (http://laravel.com/docs/4.2/errors#logging)이 있지만 사용자의 요구가 충족되면 솔루션이 정상적으로 보입니다. – Joe

답변

0

귀하의 질문에 대한 진정한 대답은 아닙니다 (귀하가 답을 얻은 것처럼 보이지만).보다 일반적인 해결책을 고려하고 싶을 수 있습니다. 예를 들어, 사용자가 저장 트리거 할 때이

User { 
    protected $email; 
    protected $username; 
    protected $name; 
} 

같은 객체 User이 있다고 할 수 있습니다, 당신은 PARAM 이름이 제안으로, 전과 변경 후 사용자 상태를 전파, 이벤트 user.change($oldUser, $newUser)을 트리거합니다.당신은 다음과 같이 그것을 처리합니다 :

Event::listen('user.change', function($oldUser, $newUser) { 
    // you could do a recursive diff here 
    $diff = array_diff((array) $newUser, (array) $oldUser); 

    // diff here contains only the changes made in that request 
    // if you add more properties to user, they will work too 
    // as there might be one or more properties in the diff, a non-prescribed columns 
    // storage such as MongoDB might be a best choice 
} 

어떤 식 으로든 생각을위한 음식, HTH.

관련 문제