2017-05-31 3 views
-2

Ich habe ein Laravel-Projekt und dort habe ich eine Liste (läuft), wo ich den Lauf (die ganze Reihe) mit der höchsten Länge haben möchte. Wenn ich diesen Code schreibe, bekomme ich nur eine Nummer (die richtige Zahl) als Ausgabe. Die user_id benötige ich, weil ich nur einige Durchläufe suchen möchte. Warum?Laravel Project, jquery warum bekomme ich nur eine Nummer und nicht die Zeile?

$run = DB::table('runs')->where('user_id','=',$id)->max('length'); 

Antwort

2

Das Problem ist, dass Ihre aktuelle Abfrage max verwendet, die den angegebenen Zweck hat:

Abrufen, um den maximalen Wert einer bestimmten Spalte.

Dies ist eine Aggregatmethode, die Ihnen keinen bestimmten Datensatz liefert.

Stattdessen möchten Sie den Datensatz mit der längsten Länge ausführen. Der beste Weg, dies zu tun ist, Ihre Daten mit Längstes zu sortieren und den ersten Datensatz holen:

$run = DB::table('runs')->where('user_id','=',$id)->orderBy('length', 'desc')->first(); 
+1

scheint mir richtig. + 1 –

0

Sie die Nummer nur bekommen, weil das ist, was Sie fragen :) Die DB Abfrage, die Sie übersetzt schrieben dies:

Die max() Methode erzwingt Aggregation, daher Ihr Ergebnis.

Verwandte Themen