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();