You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于user_id统计通知?解决全员计数相同问题

按用户维度统计通知数量的实现方案

问题分析

当前代码查询的是所有状态为2的Support记录,导致所有成员看到的通知计数完全一致,无法实现基于user_id的个性化统计。结合你提供的数据库表结构(包含user_id字段),我们需要修改查询逻辑,关联当前登录用户的ID来过滤数据。

代码修改方案

1. 调整查询逻辑

将原查询改为仅统计属于当前登录用户且状态为2的Support记录,同时优化性能:

@php 
use Illuminate\Support\Facades\Auth;

// 仅统计当前用户的未处理通知,直接用count()在数据库层面统计更高效
$check_count = Auth::check() 
    ? \App\Models\Support::where('status', 2)->where('user_id', Auth::id())->count()
    : 0;
@endphp

<li class="header__menu-item"> 
    <span>Support</span>
    @if($check_count > 0)
        <span class="notification notranslate">{{ $check_count }}</span>
    @endif
</li>

代码优化说明

  • 使用count()直接在数据库层面完成统计,避免先查询所有数据再计数的性能浪费。
  • 增加Auth::check()判断,处理未登录用户的情况,避免因无用户ID导致的报错。
  • 通过where('user_id', Auth::id())关联当前用户ID,实现每个成员看到专属的通知计数。

额外注意事项

  • 确认Support模型对应的数据表中,user_id字段正确存储了每条通知所属用户的ID。
  • 若项目中未全局引入Auth门面,需在模板或控制器中手动引入use Illuminate\Support\Facades\Auth;。

内容的提问来源于stack exchange,提问作者HaGoN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:12:08