2017-03-24 29 views
0

私はこのブレードテンプレートにforeachループを持っています。Laravel Blade - orderBy

それは、彼らが(プログレスで待って、発売)であるかの段階で、すべての従業員がに関与しているプロジェクトやグループにそれらを見つける
@foreach ($employee->projects->groupBy('stage') as $stage => $project) 
    <tbody> 
    <td>{{ $stage }}</td> 
    <td class="text-center">{{ count($project) }}</td> 
    </tbody> 
@endforeach 

。そして、ステージの数と、各ステージに何人いるかを数えます。これは完全に機能しますが、正しい順序ではありません。 Waiting、In Progress、Launchedで私は彼らが好きです。現在は、Launched、Waiting、In Progressの中にあります。

どのように注文することができますか?

答えて

0

に似て使う必要がありますする必要があります。ここでは、

@foreach ($projects as $project) 
    <tbody> 
    <td>{{ $project->stage }}</td> 
    <td class="text-center">{{ $project->total }}</td> 
    </tbody> 
@endforeach 

希望、これは他の誰かを助け、私は... ...私が何をしたか、私のブレードのテンプレートで次に

$projects = $employee->projects() 
     ->groupBy('stage') 
     ->select('stage', DB::raw('count(*) as total')) 
     ->orderByRaw('case 
      when stage = "Waiting" then 1 
      when stage = "In Progress" then 2 
      when stage = "Launched" then 3 
      end') 
     ->get(); 

です。

0

SQLは

SELECT ... FROM projects GROUP BY stage 
    ORDER BY stage = 'Waiting' DESC, stage = 'In Progress', ... 

は、おそらくあなたは[OK]を、これを考え出したこの

->order_by(DB::expr("stage = 'Waiting' DESC"))->order_by(...) 
+0

こんにちは、ブレードテンプレートでそのクエリを実行できますか?私はそれがコントローラーになければならないと思いますよね?私は、注文する必要があるブレードテンプレートにforeachループを持っています。 – robk27

関連する問題