Ad

Laravel Blade Templating @foreach Order

- 1 answer

Is there any way to sort @foreach loop in laravel blade?

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

I wolud like to order by $key->description,

I know I can use order by in my controller,

->orderBy('description')

but the controller returns other values and those values must be sorted as well, so I need to order by in blade.

Ad

Answer

Assuming that your $specialist variable is an Eloquent collection, you can do:

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

Moreover, you could call your Eloquent model directly from the template:

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

Note that you are using a misleading variable name of $key in your foreach() loop. Your $key is actually an array item, not a key. I assume that you saw foreach ($array as $key => $value) syntax somewhere and then removed the $value?

Ad
source: stackoverflow.com
Ad