2017-07-25 7 views
0

イベントリスナーからログインして保存したいのですが、カスタムリスナーに次のコードがあります。ユーザーのIDを取得しようとすると、毎回nullが返されます。このアプローチは、私がどのように進めるべきか、間違った道にあるのでしょうか?Laravel 5.4ユーザーのログインを保存するリスナー

<?php 

namespace App\Listeners; 

use App\User; 
use App\LoginLog; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldQueue; 
use Event; 

class LogSuccessfulLogin 
{ 


    protected $user; 


    /** 
    * Create the event listener. 
    * 
    * @return void 
    */ 
    public function __construct(User $user) 
    { 
     $this->user = $user; 
    } 

    /** 
    * Handle the event. 
    * 
    * @param IlluminateAuthEventsLogin $event 
    * @return void 
    */ 
    public function handle($event) 
    { 

     var_dump($this->user->account_id); 
     die; 
      $login = new LoginLog(); 

      $login->ip = \Request::ip(); 
      $login->notiz = 'login'; 
      $login->login_date = \Carbon\Carbon::now(); 
      $login->user = $this->user->account_id; 

      $login->save(); 



    } 
} 

答えて

0

私はイベントから直接ユーザーを取得するようにしてください。そのような 何か:

namespace App\Listeners; 

use Illuminate\Auth\Events\Login; 
use Illuminate\Http\Request; 

class LogSuccessfulLogin 
{ 
    /** 
    * Create the event listener. 
    * 
    * @param Request $request 
    * @return void 
    */ 
    public function __construct(Request $request) 
    { 
     $this->request = $request; 
    } 

    /** 
    * Handle the event. 
    * 
    * @param Login $event 
    * @return void 
    */ 
    public function handle(Login $event) 
    { 
     $user = $event->user; 
     $user->last_login_at = date('Y-m-d H:i:s'); 
     $user->last_login_ip = $this->request->ip(); 
     $user->save(); 
    } 
} 

これは、そのことについての良いチュートリアルです: https://stevenwestmoreland.com/2017/03/recording-last-login-information-using-laravel-events.html はこれがあなた

お役に立てば幸いです
関連する問題