当用户在Laravel 5.2上登录时,我试图更新用户的last_login_at
。我用php artisan make:auth
。Laravel 5.2的EventServiceProvider映射登录
我有应用程序/监听器/ UpdateLastLoginOnLogin.php。
namespace App\Listeners;
use Carbon\Carbon;
class UpdateLastLoginOnLogin
{
public function handle($user, $remember)
{
$user->last_login_at = Carbon::now();
$user->save();
}
}
而且在app /供应商/ EventServiceProvider:
命名空间应用\供应商;
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)
{
...
我在应用程序中的以下/ user.php的
protected $dates = ['last_login_at'];
而且在我的应用程序/ HTTP /控制器/管理/ 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
?
我得到FatalErrorException的UpdateLastLoginOnLogin.php 14行错误:调用未定义的方法Illuminate \ Auth \ Events \ Login :: save() – shin
您打电话保存事件?也许你的意思是在模型上做到这一点? – lagbox
嗯,我只想在用户登录时更新用户的last_login_at。 – shin