拉拉维尔刀片模板@foreach订购

2022-08-31 00:20:45

有没有办法在拉拉维尔刀片中对循环进行排序?@foreach

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

我喜欢按,$key->description

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

->orderBy('description')

但是控制器返回其他值,并且这些值也必须进行排序,因此我需要在刀片中按顺序排序。


答案 1

假设您的$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为$key = > $value)语法,然后删除了$value?


答案 2

我建议使用laravel系列。更具体地说,sortBy()。您可以在视图中使用它们中的任何一个,也可以在要从中传递数据的控制器中使用。如果模型正在传递数据,请确保在继续使用列出的任何其他函数之前使用该函数。collect()

希望这有帮助!


推荐