【发布时间】:2015-08-06 05:58:25
【问题描述】:
我正在尝试使用 Laravel 5 制作一个基本的 twitter-eqs 消息应用程序。
有消息和发件人。我正在尝试编写一个查询来显示最新消息、发件人以及发件人显示的消息总数。查询应该只显示每个用户的最新消息。例如如果一个人在过去 5 分钟内发送了 6 条消息,则只会显示他们最新的一条消息。
我试图以 Eloquent 的方式做的是:
- 查询最新消息,GroupBy Sender
- 选择发件人姓名,将发件人姓名加入查询 1
- GroupBy Sender 的消息查询计数,加入查询 2
这个过程可能从根本上是错误的。
然后,在我看来,我会渲染:发件人 A -(31 条消息),您好,这是我的消息。
表格
我有两张桌子
发件人
ID |名称
和
消息
ID |发件人ID |留言 | Created_at
查询
$latestMessages = Sender::
join('messages', 'messages.sender_id', '=', 'senders.id')
->OrderBy('messages.created_at', 'asc')
->GroupBy('senders.id')
->get();
问题
这会输出最旧的消息,而不是最新的消息。 (另外,我不知道如何计算来自每个发件人的消息并加入这个)。
我尝试将“ASC”和“DESC”更改为无济于事。当我删除 GroupBy 时,它确实按所需顺序(从最新到最旧)显示消息,但我不知道如何只显示每个发件人 1 个。
问题 有人可以解释如何使用 Laravel 5 或我的方法中的地板以及我应该做什么来实现这一目标吗?
如果你能解释如何在 Eloquent 中查询和加入 count(),那就太棒了。
【问题讨论】:
-
使用这个softonsofa.com/…。
Group by和order by在 MySQL 中不能按预期一起工作。
标签: laravel eloquent laravel-5