Laravel刀片模板,每个订单

6ioyuze2  于 2023-02-10  发布在  其他
关注(0)|答案(3)|浏览(134)

laravel blade中的@foreach循环有什么排序方法吗?

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

我想按$key->description订购,
我知道我可以在控制器中使用排序,

->orderBy('description')

但是控制器返回其他值,这些值也必须排序,所以我需要在Blade中使用order by。

6ovsh4lw

6ovsh4lw1#

假设你的$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?

bq3bfh9z

bq3bfh9z2#

我建议使用一个laravel collection,更具体地说,就是sortBy(),你可以在你的视图或者你传递数据的控制器中使用其中的任何一个,如果数据是由一个模型传递的,那么在继续使用其他列出的函数之前,一定要使用collect()函数。
希望这有帮助!

2ic8powd

2ic8powd3#

即使顺序失败,也可以使用->values()重新索引元素

$collection->sortBy('key')->values()

相关问题