不会返回任何通知

问题描述 投票:1回答:2

我试图通过我的控制器获取用户的未读通知。

这有效:

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和Backpack 3.5。

使用权限管理器包的UseBackpackAuthGuardInsteadOfDefaultAuthGuard中间件,Laravel的默认身份验证保护程序在背包路由中使用Backpack auth是不可或缺的。在控制器的其余部分,auth()和backpack_auth正常工作。

laravel backpack-for-laravel laravel-notification
2个回答
0
投票

试试这个:

public function notifications()
    return Auth::user()->unreadNotifications()->limit(5)->get();
}

正如文档中所述:

您可以通过Auth Facade访问经过身份验证的用户:

或者,一旦用户通过身份验证,您就可以通过Illuminate \ Http \ Request实例访问经过身份验证的用户。请记住,类型提示类将自动注入到控制器方法中:


0
投票

Authauth()可能在这里不起作用,因为你正在使用Backpack For 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的默认守卫。

© www.soinside.com 2019 - 2024. All rights reserved.