Welche Laravel-Abfrage würde ich verwenden, um groupBy ('author_id'), sondern das neueste Ergebnis. Im Moment zieht alles, was ich versuche, das erste Ergebnis. Ich habe mit MAX versucht (id) als id SQL-Funktion, aber ohne GlückWie gruppiere ich den letzten Datensatz in der Gruppe
es den Rekord ok findet, findet nur den ersten Datensatz in der Gruppe
Hier ist meine Modell-Abfrage, die ich benutze:
public function lastMessages() {
return $this->hasMany('App\Message', 'recipient_id')->groupBy('author_id')->orderBy('created_at', 'DESC');
}
ich habe auch versucht:
public function lastMessages() {
return $this->hasMany('App\Message', 'recipient_id')
->select(DB::raw('*, max(id) as id))
->groupBy('author_id')
->orderBy('id', 'desc');
}
ich auch dieses und kein Glück versucht:
public function lastMessages() {
return $this->hasMany('App\Message', 'recipient_id')
->select(DB::raw('*, max(created_at) as created_at))
->groupBy('author_id')
->orderBy('created_at', 'desc');
}
Alle oben genannten werden die erste Zeile der Gruppe author_id zurückgeben. Ich möchte die letzte Zeile jeder Gruppe oder die letzte Zeile zurückgeben. Ich habe auch versucht -> neuste() und keine Würfel!
Vielen Dank im Voraus für die Hilfe.
My Table:
id project_id author_id Nachricht created_at updated_at
Es kann hilfreich sein, wenn Sie einige Beispieldaten zusammen mit der gewünschten Ausgabe anzeigen. –