我正在尝试通过控制器获取用户的未读通知。
这有效:
public function notifications(){
return \App\User::find(auth()->user()->id)->unreadNotifications()->limit(5)->get();
}
这不是,它返回一个空集合:
public function notifications(){
return auth()->user()->unreadNotifications()->limit(5)->get();
}
你能告诉我我在想什么吗?预先感谢。
在背包3.5中使用Laravel 5.8。
使用权限管理器包的UseBackpackAuthGuardInsteadOfDefaultAuthGuard中间件,忽略了Laravel的默认身份验证保护,可以在背包路由中使用背包身份验证。在控制器的其余部分,auth()和Backpack_auth正常工作。
答案 0 :(得分:0)
尝试一下:
window!.makeFirstResponder(self)
如文档所述:
您可以通过Auth外观访问经过身份验证的用户:
或者,一旦验证了用户身份,您就可以通过Illuminate \ Http \ Request实例访问已验证的用户。请记住,类型提示类将自动注入到您的控制器方法中:
答案 1 :(得分:0)
Auth
和auth()
在这里可能不起作用,因为您使用的是Laravel背包身份验证,它使用的保护与Laravel使用的默认保护不同。
这可能对您有用:
backpack_user()->unreadNotifications()->limit(5)->get();
如果可行,原因如下:
如果您查看project/vendor/backpack/base/src/helpers.php
,您会发现backpack_user()
是backpack_auth()->user()
的别名,而backpack_auth
的作用是:
return \Auth::guard(backpack_guard_name());
这很重要,因为它抓住了定义的config/backpack/base.php
(默认为backpack
)的防护,并使用它代替了Laravel的默认防护web
。