Laravel 不会返回任何通知
我试图通过我的控制器获取用户的未读通知 这项工作:Laravel 不会返回任何通知,laravel,backpack-for-laravel,laravel-notification,Laravel,Backpack For Laravel,Laravel Notification,我试图通过我的控制器获取用户的未读通知 这项工作: public function notifications(){ return \App\User::find(auth()->user()->id)->unreadNotifications()->limit(5)->get(); } 否则,它将返回一个空集合: public function notifications(){ return auth()->user()->unre
public function notifications(){
return \App\User::find(auth()->user()->id)->unreadNotifications()->limit(5)->get();
}
否则,它将返回一个空集合:
public function notifications(){
return auth()->user()->unreadNotifications()->limit(5)->get();
}
你能告诉我我错过了什么吗?提前谢谢
使用Laravel 5.8和背包3.5
Laravel的默认auth guard被改写为在背包路由中使用背包身份验证,使用权限管理器包的UseBackackackAuthGuard而不是DefaultAuthGuard中间件。在控制器的其余部分,auth()和backpack_auth工作正常。尝试以下操作:
public function notifications()
return Auth::user()->unreadNotifications()->limit(5)->get();
}
如文件所述:
您可以通过Auth facade访问经过身份验证的用户:
或者,一旦用户通过身份验证,您可以通过Illumb\Http\Request实例访问经过身份验证的用户。请记住,类型提示类将自动注入控制器方法:
Auth
和Auth()
在这里可能不起作用,因为您使用的是用于Laravel身份验证的背包,它使用的防护装置与Laravel使用的默认防护装置不同
这可能适合您:
如果有效,原因如下: 如果你看一下
project/vendor/backack/base/src/helpers.php
你会发现backackup\u user()
是backackup\u auth()->user()的别名,backackup\u auth
做了一个:
return\Auth::guard(backpack\u guard\u name())代码>
这是很重要的一点,因为它获取了定义为config/backpack/base.php
(默认情况下为backpack
)的保护,并使用该保护,而不是Laravel的web
默认保护不起作用。我还要补充一点,我正在使用背包的授权。没有变化。我已经用UseBackackAuthGuardIn而不是Backack permission manager包的DefaultAuthGuard中间件覆盖了默认的AuthGuard。在控制器的其余部分中,auth()正常工作。我的怀疑现在出现在我的路由名称空间中。我正在编辑我的问题。谢谢你的贡献。
backpack_user()->unreadNotifications()->limit(5)->get();