2015-10-20 50 views
0

我有一个集合返回消息,但是,我想按'主题'和'发件人'为每个主题创建1个div,并显示最新的一个的created_at。分组由相同的字段和显示为1个分区

所以我必须:

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,并告诉他们为1组(1格)通过使用最新的消息(created_at)?什么是最好的方法?

回答

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

+0

这并不解决问题。更详细的讨论:http://stackoverflow.com/questions/33271715/laravel-5-multi-dimensional-groupby-orderby-paginate – senty

相关问题