2015-10-20 29 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