在 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 Eloquent 中获取和过滤关系

laravel 8:插入方法在 eloquent 中获取最后一个插入 id(插入方法)

如何在 Eloquent ORM laravel 中获取最后一个插入 ID

获取模型中的属性 - laravel eloquent

如何用 eloquent 在 Laravel 中只获取一个用户数据?