2016-11-11 4 views
3

Als Neuling in Laravel versuche ich die Bilder einer Galerie nach dem Zufallsprinzip anzuzeigen. In routes.php habe ich zur Zeit diesen Code:Laravel OrderBy Random

// Get galleries 
$galleries = App\Gallery::orderBy('id', 'DESC')->get(); 

Haben Sie eine Ahnung, es funktioniert?

Dank

Antwort

8

Für Laravel> = 5.2 Sie inRandomOrder() Methode verwenden könnte.

Beschreibung: Die inRandomOrder() Verfahren verwendet werden kann, zufällig die Abfrageergebnisse zu sortieren. Zum Beispiel können Sie diese Methode verwenden, um einen zufälligen Benutzer zu holen:

Beispiel:

$galleries = App\Gallery::inRandomOrder()->get(); 
//Or 
DB::table('gallery')->inRandomOrder()->get(); 

Für andere Versionen> = 5.0 Sie random() Methode verwenden könnten.

Beschreibung: Die random() Methode gibt einen Zufallsgenerator aus der Sammlung.

Beispiel:

App\Gallery::all()->random()->get(); 

Hoffnung, das hilft.

+0

Danke für Ihre Antwort. Diese Lösung gibt einen Fehler: 'BadMethodCallException in Builder.php Zeile 2161: Aufruf zu undefinierter Methode Illuminate \ Database \ Query \ Builder :: inRandomOrder()' – Vfero

+0

Es scheint ** InRandomOrder ** ist das Problem. Ich habe immer noch den gleichen Fehler. – Vfero

+1

ist es für> = Laravel 5.2 .. überprüfen Sie Ihre Laravel-Version – LorenzoBerti

1

Sie können so versuchen:

$galleries = App\Gallery::orderByRaw('RAND()')->get() 
+0

Thnaks für Ihre Antwort, diese Lösung macht keine Änderung, ich bekomme immer noch ein Ergebnis als orderby ID – Vfero

+0

Laufen Sie die genaue Abfrage oben oder Sie fügen mehr hinzu? –

+0

Ich füge einfach hinzu; am Ende – Vfero