2017-01-20 4 views
2

У меня есть столбец user в базе данных, которые имеют viewed_at столбец с типом date.обновить базу данных при входе в laravel

viewed_at

Я хочу обновить это поле на каждом входе пользователя в систему.
Я хочу, чтобы запустить код на каждом входе пользователя в систему -

$user = User::find(Auth::user()->id); 
$user->viewed_at = /* current date */; 
$user->save(); 

Пожалуйста, помогите мне с этим вопросом.
Пожалуйста, не предлагайте мне сделать это в контроллере, к которому перенаправляется аутентифицированный человек.

+0

Возможно, что-то простое, как '$ user-> seen_at = 'NOW()';' – RiggsFolly

+0

, вы должны сделать это в своем Auth-контроллере. В чем проблема? –

ответ

1

В 5.3 Вы можете переопределить метод authenticated() в Auth\LoginController.php и поставить логику там. Кроме того, поскольку Laravel всегда получает экземпляр аутентифицированного пользователя, вы можете сохранить один запрос, используя объект auth()->user().

use Carbon\Carbon; 

.... 

protected function authenticated() 
{ 
    $user = auth()->user(); 
    $user->viewed_at = Carbon::now(); 
    $user->save(); 
} 
+0

с использованием метода 'authenticated()' в 'Auth \ LoginController.php' нарушает функцию входа по умолчанию? – Advaith

+0

@Advaith no. 'login()' вызывает 'sendLoginResponse()', который затем вызывает 'authenticated()' –

+1

Насколько вы всегда будете аутентифицироваться по умолчанию '\ Auth \ LoginController', это должно быть достаточным решением. – devk

-1

Try:

$user->viewed_at = date('Y-m-d H:i:s'); 
Смежные вопросы