2017-12-17 2 views
1

Ich benutze Laravel 5.5, und ich möchte wissen, wie können wir den höchsten Wert jeder Spalte in einer Abfrage erhalten?Laravel erhalten höchsten Wert jeder Spalte

Ist das möglich oder sollten wir eins nach dem anderen abfragen?

Ich versuchte unter dem Code.

DB::table('family')->max('children')->max('salary'); 

Wenn ich nur DB::table('family')->max('children') versuchte, funktioniert es gut. Aber wenn ich DB::table('family')->max('children')->max('salary') versuchen, erhalte ich unten Fehler

Aufruf einer Member-Funktion max() auf Zeichenfolge

+0

Was Sie bisher versucht haben? Bitte beachten Sie diese Anleitung, wie man Fragen auf Stack-Überlauf fragen: [Link hier] (https://stackoverflow.com/help/how-to-ask) –

+0

@BlunderingPhilosopher ich habe nicht alles versuchen, weil ich weiß nicht, wie das zu tun, nur Fragen gestellt –

Antwort

1

Sie können entweder durch einzelne Abfrage erhalten.

$result = DB::table("family as f") 
->select([DB::raw('MAX(f.children) AS children_max'),DB::raw('MAX(f.salary) AS salary_max')]) 
->groupBy('f.id') 
->first(); 

Oder separate ->max() Methode.

$family = DB::table('family'); 
$max_children = $family->max('children'); 
$max_salary = $family->max('salary'); 

mehr Details in other answer Erhalten und in Laravel Docs

+0

Du bist ein Held der sehr gut funktioniert, aber welcher Methode bevorzugen Sie für höhere Geschwindigkeit? –

+0

Obwohl zweite Lösung ist sauberer, aber zuerst ist schneller, verwenden Sie nach Ihrem Gebrauch, ist zuerst bevorzugt. – C2486

+0

Ich habe nicht nach unten Abstimmung, aber ich Sie nur darauf hindeutet, immer Ihren Versuch hinzufügen, ich bin dein Kommentar in Ihrer Frage hinzugefügt – C2486

0

hinzufügen max() mit Ihrem eloquent den maximalen Wert jeder Spalte Wert zu erhalten.

ModelName::select(DB::raw('MAX(column1) AS colum1'),DB::raw('MAX(colum2) AS colum2'))->get(); 

Kontrolle dieses Laravel docs

Edit: Sie können in Laravel es mit Query Builder tun.

+0

zu wissen, wenn ich versuche, DB :: Tabelle (‚Familie‘) -> max (‚Kinder), es funktioniert gut, aber wenn ich versuche DB :: Tabelle (‘ Familie ‚) -> max (‘ Kinder) - > max ('salary') das ergebnis ist "Call to a member function max() am string" –

+0

Ich habe die Antwort bearbeitet, überprüfe, ob es für dich funktioniert .. –

Verwandte Themen