Laravel Blade Templating @foreach order
есть ли способ сортировки @foreach
петля в лезвии laravel?
@foreach ($specialist as $key)
<option value="{{$key->specialist_id}}"> {{$key->description}}</option>
@endforeach
Я wolud как по заказу $key->description
,
Я знаю, что могу использовать order by в моем контроллере,
->orderBy('description')
но контроллер возвращает другие значения, и эти значения также должны быть отсортированы, поэтому мне нужно заказать в blade.
2 ответов
предполагая, что ваша переменная $specialist является красноречивой коллекцией, вы можете сделать:
@foreach ($specialist->sortBy('description') as $oneSpecialist)
<option value="{{ $oneSpecialist->specialist_id }}"> {{ $oneSpecialist->description }}</option>
@endforeach
кроме того, вы можете вызвать свою красноречивую модель непосредственно из шаблона:
@foreach (Specialist::all()->sortBy('description') as $oneSpecialist)
<option value="{{ $oneSpecialist->specialist_id }}"> {{ $oneSpecialist->description }}</option>
@endforeach
обратите внимание, что вы используете вводящее в заблуждение имя переменной $key в цикле foreach (). Ваш $key на самом деле является элементом массива, а не ключом. Я предполагаю, что вы где-то видели синтаксис foreach ($array as $key => $value), а затем удалили $value?
Я бы предложил использовать laravel коллекция. Более конкретно,sortBy()
. Вы можете использовать любой из них в своем представлении или контроллере, с которого вы передаете данные. Если данные передаются моделью, обязательно используйте collect()
функция перед переходом к использованию любых других перечисленных.
надеюсь, что это помогает!