2017-10-17 6 views
1

Ich habe eine Abfrage, die Gruppe nach und durch mit eifrigen Laden läuft und es scheint Gruppe von funktioniert gut, aber Reihenfolge von funktioniert nicht.Laravel eloquent Reihenfolge nach Gruppe von mit eifrig 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(); 

Es gibt Daten wie diese

{ 
"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" 
    } 
] 

}

Aber ich will nur die ersten beiden neuesten Ergebnisse zurückzukehren. Nur ID 133 und 132 Ich weiß, ich habe ->groupBy('id') hinzugefügt, die hier nutzlos ist und alle Datensätze zurückgibt. Ich habe es nur hinzugefügt, um zu zeigen, was meine Daten sind. Also, wenn ich ->groupBy('id') entferne dann gibt es nur ID 131 und 130

Bitte helfe. Vielen Dank.

Antwort

1

Ok, ich löse es, indem ich eine zusätzliche Zeile hinzufüge :) Ich posten für andere hilft.

->orderBy('created_at', 'desc') 
->get() 
->unique('conversation_id'); 
Verwandte Themen