2016-01-10 10 views
5

laravelブレードでループを並べ替える方法はありますか?@foreachループですか?
ラベラーブレードテンプレート@foreach order

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

私は

->orderBy('description') 

、私のコントローラ内で順序を使用することができます知っているが、コントローラが他の値を返し、それらの値でなければなりません、$key->descriptionで注文する

が好きwoludソートされているので、私はブレードで注文する必要があります。

答えて

14

あなたの$の専門変数が雄弁コレクションであると仮定すると、あなたが行うことができます:

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

をまた、あなたはテンプレートから直接自分の雄弁モデルを呼び出すことができます:あなたは

@foreach (Specialist::all()->sortBy('description') as $oneSpecialist) 
    <option value="{{ $oneSpecialist->specialist_id }}"> {{ $oneSpecialist->description }}</option> 
@endforeach 

注意あなたのforeach()ループで$ keyという誤解を招く変数名を使用します。 $キーは実際にはキーではなく配列項目です。私はforeach($ array = $ valueとしての$ array)構文をどこかで見た後、$値を削除したと仮定します。

1

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

希望すると便利です。