2017-10-17 17 views
1

私は、グループごとに実行していて、熱心な負荷で注文しています。Laravel eloquent order by eager loading

Message::whereIn('conversation_id',$msgs) 
     ->where('deleted', '!=', $userId) 
     ->with(array('last_sender' =>function($query) use ($userId){ 
       $query->where('id','!=', $userId); 
       $query->select('id', 'userName', 'profilePic','firstName', 'lastName'); 
      })) 

     ->with(array('last_reciever' =>function($query) use ($userId){ 
       $query->where('id','!=', $userId); 
       $query->select('id', 'userName', 'profilePic','firstName', 'lastName'); 
      })) 
     ->orderBy('id', 'desc') 
     ->orderBy('conversation_id', 'desc') 
     ->groupBy('id') 
     ->groupBy('conversation_id') 
     ->get(); 

それはこの

{ 
"data": [ 
    { 
     "id": 133, 
     "conversation_id": 13, 
     "last_sender": null, 
     "last_reciever": { 
      "id": 55, 
      "userName": "buyer", 
      "profilePic": "pRBDBFJW55baSnF560Ajid8jTgPo5kmg4i5LMhPG.jpeg", 
      "firstName": "Matti", 
      "lastName": "Rames" 
     }, 
     "msg": "second message 2 to user second", 
     "attachment": null, 
     "deleted": 0, 
     "seen": 0, 
     "created_at": "2017-10-17 15:43:14", 
     "updated_at": "2017-10-17 15:43:14" 
    }, 
    { 
     "id": 132, 
     "conversation_id": 11, 
     "last_sender": null, 
     "last_reciever": { 
      "id": 54, 
      "userName": "Sadek", 
      "profilePic": "Nir7zgorNT2dmwcXJdhNK3ZmPAltmkEnj0SXDCDC.png", 
      "firstName": "Sadek", 
      "lastName": "Hossain" 
     }, 
     "msg": "second message to first user", 
     "attachment": null, 
     "deleted": 0, 
     "seen": 0, 
     "created_at": "2017-10-17 15:38:16", 
     "updated_at": "2017-10-17 15:38:16" 
    }, 
    { 
     "id": 131, 
     "conversation_id": 13, 
     "last_sender": null, 
     "last_reciever": { 
      "id": 55, 
      "userName": "buyer", 
      "profilePic": "pRBDBFJW55baSnF560Ajid8jTgPo5kmg4i5LMhPG.jpeg", 
      "firstName": "Matti", 
      "lastName": "Rames" 
     }, 
     "msg": "second message to second user", 
     "attachment": null, 
     "deleted": 0, 
     "seen": 0, 
     "created_at": "2017-10-17 15:37:49", 
     "updated_at": "2017-10-17 15:37:49" 
    }, 
    { 
     "id": 130, 
     "conversation_id": 11, 
     "last_sender": null, 
     "last_reciever": { 
      "id": 54, 
      "userName": "Sadek", 
      "profilePic": "Nir7zgorNT2dmwcXJdhNK3ZmPAltmkEnj0SXDCDC.png", 
      "firstName": "Sadek", 
      "lastName": "Hossain" 
     }, 
     "msg": "Hi how are you", 
     "attachment": null, 
     "deleted": 0, 
     "seen": 0, 
     "created_at": "2017-10-17 15:36:49", 
     "updated_at": "2017-10-17 15:36:49" 
    } 
] 

}

のようなデータを返します。しかし、私は最初の2つの最新の結果を返すようにしたいです。 id 133132 私は->groupBy('id')を追加しましたが、ここでは役に立たず、すべてのレコードを返すことを知っています。私はちょうど私のデータが何であるかを示すためにそれを加えました。だから->groupBy('id')を取り除いた場合は、idが131となり、130

助けてください。ありがとうございました。

答えて

1

私は別の行を追加して解決します:) 他の人のために投稿しています。

->orderBy('created_at', 'desc') 
->get() 
->unique('conversation_id'); 
関連する問題