Laravel中统计排除当前用户名称的未读通知数量
Laravel统计排除当前用户的未读通知数量
嘿,我来帮你搞定这个问题~你之前的写法问题出在对关联关系的调用方式上,auth()->user()->unreadNotifications是一个Eloquent关联查询实例,不能直接用::where这种静态调用方式,得用链式的查询方法来过滤条件。
要实现“统计name字段不等于当前登录用户名称的未读通知数”,有两种常用的写法:
方法1:使用!=操作符
直接在关联查询后链式调用where方法,指定不等于的条件:
$numberOfNotifications = auth()->user()->unreadNotifications ->where('name', '!=', auth()->user()->name) ->count();
方法2:使用whereNot方法(更语义化)
Laravel提供了whereNot方法,让条件表达更直观易读:
$numberOfNotifications = auth()->user()->unreadNotifications ->whereNot('name', auth()->user()->name) ->count();
小提示
- 两种写法效果完全一致,选你觉得更顺手的就行。
- 如果你的业务场景需要兼容未登录状态,可以提前加个
auth()->check()判断,避免因用户未登录导致的报错。
内容的提问来源于stack exchange,提问作者es915
相关产品推荐
相关产品推荐

