Laravel Blade 模板化@foreach 顺序

Laravel Blade Templating @foreach order

有什么方法可以对 laravel blade 中的 @foreach 循环进行排序吗?

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

我想通过 $key->description

订购

我知道我可以在我的控制器中使用 order by,

->orderBy('description')

但是控制器 returns 其他值和那些值也必须排序,所以我需要在 blade.

中排序

我建议使用 laravel collection. More specifically, the sortBy()。您可以在您的视图或您从中传递数据的控制器中使用其中任何一个。如果数据由模型传递,请务必先使用 collect() 函数,然后再继续使用列出的任何其他函数。

希望对您有所帮助!

假设您的 $specialist 变量是一个 Eloquent 集合,您可以这样做:

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

此外,您可以直接从模板调用 Eloquent 模型:

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

请注意,您在 foreach() 循环中使用了误导性的变量名称 $key。您的 $key 实际上是一个数组项,而不是键。我假设您在某处看到了 foreach ($array as $key => $value) 语法,然后删除了 $value?