我正在尝试使用Laravel 5制作基本的twitter-eqs消息应用程序。Ordering在Laravel 5
有消息和发件人。我试图编写一个查询,显示最新消息,发件人以及发件人显示的消息总数。查询应该只显示每个用户的最新消息。例如如果一个人在最近5分钟内发送了6封邮件,它只会显示最新的邮件。
我试图以雄辩的方式做的是:
- 查询最新消息,的GroupBy发件人
- 选择发件人的名字,加入发件人的名字到查询1
- 的查询计数消息GroupBy发件人,加入查询2
此过程可能根本上是错误的。
然后,在我看来,我会渲染:发件人A - (31条消息),你好,这是我的消息。
TABLES
我有2个表
发件人
ID |名称
和
消息
ID | SenderID |留言| Created_at
QUERY
$latestMessages = Sender::
join('messages', 'messages.sender_id', '=', 'senders.id')
->OrderBy('messages.created_at', 'asc')
->GroupBy('senders.id')
->get();
问题
此输出最早的邮件,而不是最新的。 (另外,我不知道如何计算每个发件人的邮件并加入)。
我试过改变“ASC”和“DESC”无济于事。当我删除GroupBy时,它确实以所需的顺序(最新到最旧)显示消息,但我无法弄清楚如何仅显示每个发件人1个。
问题 有人能解释如何与Laravel 5,或者我的做法地板来实现这一点,我应该怎么办?
如果你可以解释如何查询和加入数量()的雄辩,这将是不可思议的。
使用此http://softonsofa.com/tweaking-eloquent-relations-how获取最新相关模型/。 “按组”和“按顺序排列”不能像MySQL预期的那样一起工作。 –