2016-01-10 9 views
5

Gibt es eine Möglichkeit, @foreach Schleife in Laravel Klinge zu sortieren?
Laravel Blade Templating @foreach Auftrag

@foreach ($specialist as $key) 
    <option value="{{$key->specialist_id}}"> {{$key->description}}</option> 
@endforeach 

I wolud von $key->description bestellen möchten,

Ich weiß, dass ich, um durch in meinem Controller verwenden können,

->orderBy('description') 

aber der Controller gibt andere Werte, und diese Werte müssen sortiert auch, also muss ich durch in Klinge bestellen.

Antwort

14

Unter der Annahme, dass Ihr $ Fach Variable eine Eloquent Sammlung ist, können Sie tun:

@foreach ($specialist->sortBy('description') as $oneSpecialist) 
    <option value="{{ $oneSpecialist->specialist_id }}"> {{ $oneSpecialist->description }}</option> 
@endforeach 

Außerdem könnten Sie Ihre Eloquent Modell direkt aus der Vorlage nennen:

@foreach (Specialist::all()->sortBy('description') as $oneSpecialist) 
    <option value="{{ $oneSpecialist->specialist_id }}"> {{ $oneSpecialist->description }}</option> 
@endforeach 

Beachten Sie, dass Sie Verwenden Sie einen irreführenden Variablennamen von $ key in Ihrer foreach() - Schleife. Ihr $ Schlüssel ist eigentlich ein Array-Element, kein Schlüssel. Ich nehme an, dass Sie foreach ($ array als $ key => $ value) -Syntax irgendwo gesehen haben und dann den Wert $ entfernt haben?

1

Ich würde vorschlagen, ein Laravel collection zu verwenden. Genauer gesagt, die sortBy(). Sie können diese in Ihrer Ansicht oder auf dem Controller verwenden, von dem Sie die Daten übergeben. Wenn die Daten von einem Modell übergeben werden, verwenden Sie unbedingt die Funktion collect(), bevor Sie die anderen aufgeführten Funktionen verwenden.

Hoffe, das hilft!