Laravel Blade Templating @foreach订单

时间:2016-01-10 00:12:54

标签: php laravel foreach blade

有没有办法在laravel刀片中排序@foreach循环?

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

我喜欢按$key->description

订购

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

->orderBy('description')

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

2 个答案:

答案 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()函数,然后再继续使用列出的任何其他函数。

希望这有帮助!