php - Laravel Eloquent distinct 没有按预期工作
问题描述
我目前正在 Laravel 中创建一个基本的私人消息系统。在我的数据库中,我有一个消息表。其中两列是“sender_id”和“recipient_id”。
我正在尝试做的是使用 eloquent 浏览此表并在收件箱中列出所有当前登录用户的 id 列在这些列中的时间。然后我将使用“distinct”来忽略重复的条目,以便用户只列出一次。使用此 ID,我可以显示收件人的用户名,以便当用户单击用户名时,它会将他们带到该用户的消息线程。
为了测试,我目前只检索列“recipient_id”并将其输出到刀片中。这是我认为应该只输出一次收件人的行,尽管在表中多次找到。
消息控制器
$messages = Message::where('recipient_id', $user)->distinct('recipient_id')->get();
然而,在刀片中,同一用户被输出两次(因为他们找到了 2 条消息),而我原本期望不同的函数删除重复的条目。
我也试过
$messages = Message::where('recipient_id', $user)->distinct()->get();
但这也没有用。
如果我收到来自 2 个不同用户的 3 条消息,它会输出如下内容:
来自:
- 示例用户 1
- 示例用户 1
- 示例用户 2
它应该输出什么
- 示例用户
- 示例用户 2
谢谢
解决方案
使用 Laravel Collection 并将代码更改为:
$messages = collect(Message::where('recipient_id', $user)->get());
$messagesUnique = $messages->unique('recipient_id');
$messagesUnique->values()->all();
推荐阅读
- python - 我想运行这个命令——pip3 install rarfile。但它不起作用并给出以下结果
- javascript - 无法访问弹出窗口元素...返回 null
- function - 函数中的 Dart 函数
- php - 使用 template_redirect 重定向 WooComm 页面
- python - Passing Python objects as arguments to tkinter's Entry validatecommand
- julia - 检查 Flux.jl 模型中的参数总数?
- python - How to display a Sympy matrix?
- java - RxJava 不显示数据
- java - How can I make certain rows bold in Jtable not depending from the value using custom cell renderer
- sql - 查询返回下个月的所有值