Laravel如何获取User表中除第一条管理员记录外的所有用户数据?
问题排查
- 过滤逻辑不符合需求:现有代码
where('id', '!=', auth()->id())的作用是排除当前登录的用户,而非你要求的「User表第一条管理员记录」 - 传参逻辑错误:你给视图同时传递了两个用户集合:过滤后的
$user、全量未过滤的$employees,如果视图渲染时使用的是$employees变量,自然无法实现排除效果
修复方案
场景1:第一条管理员为固定ID=1的记录
public function index() { // 排除ID为1的第一条管理员记录 $employees = User::where('id', '!=', 1)->get(); return view('admin.payroll', compact('employees')); }
场景2:第一条管理员为表中身份为管理员的第一条动态记录
假设你用is_admin字段标识管理员身份,代码如下:
public function index() { // 取出第一条管理员的ID $firstAdminId = User::where('is_admin', 1)->value('id'); // 排除第一条管理员后查询所有用户 $employees = User::where('id', '!=', $firstAdminId)->get(); return view('admin.payroll', compact('employees')); }
如果你同时需要排除当前登录用户和第一条管理员,叠加查询条件即可:
$employees = User::where('id', '!=', 1) ->where('id', '!=', auth()->id()) ->get();
内容的提问来源于stack exchange,提问作者imane
相关产品推荐
相关产品推荐

