按相同字段分组并显示为1分区

时间:2015-10-20 03:51:04

标签: php html mysql laravel

我有一个回复邮件的集合,但是,我想按“主题”和“发件人”对它们进行分组,为每个主题创建1个div,并显示最新的一个created_at。

所以我有:

id | senderId | receiverId | subject | message | created_at

我的控制器:

 $messages = Message::where('receiverId', \Auth::user()->name)
                 ->orderBy('created_at','desc')
                 ->paginate(10); 

  return view('chat')->with(compact('messages'));

这样可行:dd($messages[0]->subject)。另外,在我看来,我可以使用@foreach将其用作$message->created_at。目前似乎这样(主题未列出):

* yIZgT0oqH - 名称

enter image description here

如何通过subjectsenderId对它们进行分组,并使用最新消息(created_at)将它们显示为1组(1 div)?什么是最好的方式?

1 个答案:

答案 0 :(得分:0)

您可以使用groupBy / aggregation。

修改查询以执行此类操作
$messages = Message::where('receiverId', \Auth::user()->name)
                 ->groupBy('subject')
                 ->orderBy('created_at','desc')
                 ->paginate(10); 

查看相同文档 - http://laravel.com/docs/5.1/queries#ordering-grouping-limit-and-offset