2016-04-21 83 views
0

我使用Laravel/Auth安裝了Laravel。
我如何計算用戶登錄其帳戶的頻率?
我試圖找到updated_at函數來添加增量命令來增加計數。Laravel驗證計數用戶登錄

+0

登錄''AuthenticatesUsers' Trait in'Login'方法後,您可以添加代碼來計算用戶登錄計數並將其存儲在數據庫中。 –

+0

你想計算登錄次數或看看他多久登陸一次? –

回答

3

您可以使用事件來完成它。有關事件的更多信息可以在Laravel documentation

您應該添加一個新的屬性loginCountUser模型及其通訊員在db。確保在創建時loginCount字段的默認值設置爲0

要增加它,當用戶在你的記錄可以創建監聽auth.login事件偵聽器:

  1. app\Listeners

    namespace App\Listeners; 
    
    use App\User; 
    
    class UserEventListener 
    { 
        /** 
        * Handle user login events. 
        * 
        * @param User $user 
        * @param bool $remember 
        */ 
        public function onUserLogin(User $user, $remember) 
        { 
         $user->loginCount++; 
         $user->save(); 
        } 
    
        /** 
        * Register the listeners for the subscriber. 
        * 
        * @param Illuminate\Events\Dispatcher $events 
        */ 
        public function subscribe($events) 
        { 
         $events->listen(
          'auth.login', 
          'App\Listeners\[email protected]' 
         ); 
        } 
    } 
    
  2. 創建UserEventListener類訂閱的UserEventListenerEventServiceProvider

    namespace App\Providers; 
    
    use Illuminate\Contracts\Events\Dispatcher as DispatcherContract; 
    use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; 
    
    class EventServiceProvider extends ServiceProvider 
    { 
        /** 
        * The event listener mappings for the application. 
        * 
        * @var array 
        */ 
        protected $listen = [ 
         'App\Events\SomeEvent' => [ 
          'App\Listeners\EventListener', 
         ], 
        ]; 
    
        /** 
        * The subscriber classes to register. 
        * 
        * @var array 
        */ 
        protected $subscribe = [ 
         'App\Listeners\UserEventListener', 
        ]; 
    
        /** 
        * Register any other events for your application. 
        * 
        * @param \Illuminate\Contracts\Events\Dispatcher $events 
        * @return void 
        */ 
        public function boot(DispatcherContract $events) 
        { 
         parent::boot($events); 
        } 
    } 
    
+0

這似乎並不奏效.... auth.login來自Laravel 5.1 –

0

您需要在用戶表中創建一個新字段。在此之後,查看並覆蓋控制器中的postLogin功能。有關這個功能的更多信息可以在這裏找到Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers