2016-04-21 2 views
0

Я установил Laravel с Laravel/Auth.
Как я могу подсчитать, как часто пользователь регистрируется в своей учетной записи?
Я попытался найти функцию updated_at, чтобы добавить команду увеличения, чтобы увеличить счетчик.Laravel Auth count user login

+0

после входа в систему под именем «AuthenticatesUsers' в режиме« Login »вы можете добавить код для подсчета количества логинов пользователей и сохранения его в базе данных. –

+0

Вы хотите подсчитать логины или посмотреть, как часто он входит в систему? –

ответ

3

Вы можете использовать события для его выполнения. Более подробную информацию о мероприятиях можно найти на: Laravel documentation

Добавить в список сравнения loginCount к модели User и ее корреспондент в db. Убедитесь, что при создании поля loginCount значение по умолчанию установлено на 0.

Чтобы увеличить его, когда пользователь входа в систему вы можете создать приемник, который прослушивать auth.login событие:

  1. Создать UserEventListener класс в 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 к EventServiceProvider

    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.

Смежные вопросы