2017-07-25 85 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 希望这有助于你