在 laravel eloquent 中获取除当前登录用户之外的所有用户
Posted
技术标签:
【中文标题】在 laravel eloquent 中获取除当前登录用户之外的所有用户【英文标题】:Get all the users except current logged in user in laravel eloquent 【发布时间】:2014-08-28 02:39:49 【问题描述】:我在做:
User::all();
从 users 表中获取所有用户。我想选择除当前登录用户之外的所有用户。我该怎么做?比如,
User::where('id','!=',$currentUser->id)->get();
提前致谢!
【问题讨论】:
【参考方案1】:使用except()
会更流畅地完成同样的事情:
$users = User::all()->except(Auth::id());
...或者,因为您已经拥有用户 ID:
$users = User::all()->except($currentUser->id);
【讨论】:
太棒了!也适用于 ID 数组User::all()->except([1,2,3,4]);
Cheers :) 这应该更新为当前 API 下的最佳答案。
@damiani 谢谢
明确一点:这也会从数据库中获取当前用户,这是不必要的。
谢谢@damiani :)【参考方案2】:
您可以使用auth()->id()
获取当前用户的ID。然后将其传递给查询:
$users = User::where('id', '!=', auth()->id())->get();
【讨论】:
谢谢,成功了。我确实有当前登录用户的 ID,因为我正在“用户”模型中编写一个函数。我只是在提出问题之前没有尝试过,因为我认为可能 != 行不通。再次感谢。 如何处理错误?比如令牌无效、id 未找到等。谢谢【参考方案3】:如果您使用的是 Auth 助手,请使用它。
User::where('id', '!=', Auth::user()->id)->get();
【讨论】:
【参考方案4】:App\Models\User::whereKeyNot(auth()->id)->get()
使用 'except' 实际上是检索所有用户,然后对集合执行额外的操作以移除当前用户,效果并不理想。
【讨论】:
【参考方案5】:Use Auth;
Use App\User;
public function index()
$id = Auth::id();
$result = User::where('id', '!=', $id)->get();
dd($result);
【讨论】:
以上是关于在 laravel eloquent 中获取除当前登录用户之外的所有用户的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Controller Laravel belongsToMany 关系中获取正确的数据 - Laravel / Eloquent [关闭]
laravel 8:插入方法在 eloquent 中获取最后一个插入 id(插入方法)