2017-03-24 96 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 

凡发现所有的员工是由它们在(等待,进行中推出)什么阶段参与和他们组的项目。然后列出每个阶段的阶段和数量。这很好,但他们没有正确的顺序。我希望他们在等待,进行中,启动。目前它处于启动,等待,进行中。

如何在我的自定义订单中订购它们?

回答

0

好想通了这一点。这是我没有...

$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(); 

然后在我的刀模板,我没有...

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

希望这可以帮助其他人。

0

SQL应该

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

可能需要使用类似

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

嗨,我可以在刀片模板中执行该查询吗?我认为这必须在控制器中,对吗?我需要订购刀片模板中的foreach循环。 – robk27