有没有办法在laravel刀片中排序@foreach
循环?
@foreach ($specialist as $key)
<option value="{{$key->specialist_id}}"> {{$key->description}}</option>
@endforeach
我喜欢按$key->description
,
我知道我可以在我的控制器中使用order by,
->orderBy('description')
但控制器返回其他值,并且这些值也必须进行排序,因此我需要在刀片中进行排序。
答案 0 :(得分:28)
假设你的$ 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 =&gt; $ value)语法,然后删除了$ value?
答案 1 :(得分:1)
我建议使用laravel collection。更具体地说,sortBy()
。您可以在视图中使用其中任何一个,也可以使用从中传递数据的控制器。如果数据是由模型传递的,请务必使用collect()
函数,然后再继续使用列出的任何其他函数。
希望这有帮助!