Laravel Eloquent distinct 无法按预期工作

Gra*_*eme 3 php laravel eloquent laravel-5

我目前正在 Laravel 中创建一个基本的私人消息系统。在我的数据库中,我有一个消息表。其中两列是“sender_id”和“recipient_id”。

我想要做的是使用 eloquent 来浏览这个表,并在当前登录用户的 ID 列在这些列中的所有时间都在收件箱中列出。然后我将使用“distinct”来忽略重复的条目,以便用户只列出一次。使用这个 ID,我可以显示收件人的用户名,这样当用户点击用户名时,它会将他们带到该用户的消息线程。

为了测试,我目前仅检索“recipient_id”列并将其输出到刀片中。这是我认为应该只输出一次收件人的行,尽管在表中多次找到。

消息控制器

$messages = Message::where('recipient_id', $user)->distinct('recipient_id')->get();
Run Code Online (Sandbox Code Playgroud)

然而,在刀片中,当我期望不同的函数删除重复条目时,同一个用户被输出两次(因为他们找到了 2 条消息)。

我也试过

$messages = Message::where('recipient_id', $user)->distinct()->get();
Run Code Online (Sandbox Code Playgroud)

但这也不起作用。

如果我收到来自 2 个不同用户的 3 条消息,它会输出如下内容:

来自:

  • 示例用户 1
  • 示例用户 1
  • 示例用户 2

它应该输出什么

  • 示例用户
  • 示例用户 2

谢谢

Gra*_*eme 7

使用 Laravel Collection 并将代码更改为:

    $messages = collect(Message::where('recipient_id', $user)->get());

    $messagesUnique = $messages->unique('recipient_id');

    $messagesUnique->values()->all();
Run Code Online (Sandbox Code Playgroud)