web-dev-qa-db-ja.com

Laravel Blade Templating @foreach注文

laravelブレードで@foreachループをソートする方法はありますか?

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

$key->descriptionで注文したいのですが、

私はコントローラーで注文を使用できることを知っています、

->orderBy('description')

しかし、コントローラーは他の値を返し、それらの値もソートする必要があるため、ブレードで並べ替える必要があります。

15
Ugo Guazelli

$ 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を削除したと思いますか?

29
Denis Mysenko

laravel コレクション 。より具体的には、 sortBy() を使用することをお勧めします。データを渡すビューまたはコントローラーデータがモデルによって渡される場合、リストされている他のいずれかを使用する前に、必ずcollect()関数を使用してください。

お役に立てれば!

1
Derek Pollard