当用户登录Laravel 5.2时,我正在尝试更新用户的last_login_at
。我使用了php artisan make:auth
。
我有app / Listeners / UpdateLastLoginOnLogin.php。
namespace App\Listeners;
use Carbon\Carbon;
class UpdateLastLoginOnLogin
{
public function handle($user, $remember)
{
$user->last_login_at = Carbon::now();
$user->save();
}
}
在app / Providers / EventServiceProvider中:
命名空间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 = [
'auth.login' => [
'App\Listeners\UpdateLastLoginOnLogin',
],
];
/**
* Register any other events for your application.
*
* @param \Illuminate\Contracts\Events\Dispatcher $events
* @return void
*/
public function boot(DispatcherContract $events)
{
...
我在app / User.php中有以下内容
protected $dates = ['last_login_at'];
在我的app / Http / Controllers / Admin / DashboardController.php
中namespace App\Http\Controllers\Admin;
use App\Blog;
use App\User;
use App\Http\Controllers\Controller;
class DashboardController extends Controller
{
public function index(Blog $blogs, User $users)
{
$blogs = $blogs->orderBy('updated_at', 'desc')->take(5)->get();
$users = $users->whereNotNull('last_login_at')->orderBy('last_login_at', 'desc')->take(5)->get();
return view('admin.dashboard', compact('blogs','users'));
}
}
它在Laravel 5.1中工作,但在Laravel 5.2.8中没有。我认为问题是在EventServiceProvider中映射'auth.login' => ['App\Listeners\UpdateLastLoginOnLogin',]
。我尝试了login
和Auth::login()
而不是auth.login
,但他们也没有用。
如何映射protcted $listen
?
答案 0 :(得分:2)
根据升级指南,5.2中的某些事件已发生变化:
" Laravel发起的一些核心事件现在使用事件对象而不是字符串事件名称和动态参数。" - Laravel 5.2升级指南
OLD NEW
auth.attempting Illuminate\Auth\Events\Attempting
auth.login Illuminate\Auth\Events\Login
auth.logout Illuminate\Auth\Events\Logout
Laravel Docs - 5.2 Upgrade Guide
handle方法现在将事件作为其参数
...
use Illuminate\Auth\Events\Login;
class UpdateLastLoginOnLogin
{
public function handle(Login $event)
{
$event->user->last_login_at = Carbon::now();
$event->user->save();
}
}