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

Laravel中如何实现登录后查询同部门员工信息?

解决Laravel中登录用户展示同部门员工的查询问题

首先咱们得先揪出你之前查询失效的原因:你写的where('seksyen','=','Auth(section)')是把Auth(section)当成了一个固定字符串,Laravel根本不会解析它来获取登录用户的部门信息,这就是查不到数据的核心问题。

下面给你两种贴合需求的正确实现方式,你可以根据实际场景选择:

方式一:仅查询同部门员工(无需关联用户表)

如果只是要展示同部门的员工详情,不需要用户表的额外信息,直接用当前登录用户的部门去筛选staffs表就足够了:

// 先获取当前登录用户的部门(记得确保用户已登录,可通过auth中间件保护路由)
$currentUserSection = Auth::user()->section;

// 查询与当前用户同部门的员工
$data['data'] = DB::table('staffs')
    ->where('seksyen', $currentUserSection)
    ->get();

方式二:关联用户表查询(如需用户表字段)

如果需要同时获取用户表的相关信息(比如用户的类型、登录邮箱等),可以用关联查询,但要注意字段的匹配逻辑:

$currentUserSection = Auth::user()->section;

$data['data'] = DB::table('staffs')
    // 通过部门字段关联users表
    ->join('users', 'users.section', '=', 'staffs.seksyen')
    // 筛选当前用户部门的员工
    ->where('staffs.seksyen', $currentUserSection)
    // 可选:指定查询字段,避免字段名冲突(比如users和staffs都有邮箱类字段)
    ->select('staffs.*', 'users.name as user_name', 'users.email as user_email')
    ->get();

额外注意事项

  • 登录验证:一定要确保访问该页面的用户已经登录,你可以给路由加上auth中间件,或者在控制器里先判断if (auth()->check()),否则Auth::user()会返回null,直接导致报错。
  • 字段一致性:确认users表的section字段和staffs表的seksyen字段存储的部门标识是完全一致的(比如都是"A"、"B"这样的格式,没有大小写或拼写差异),否则关联筛选会失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:57:02