2017-03-24 5 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', ... 

아마 당신이 좋아이 알아 낸이

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

안녕하세요, 블레이드 템플릿에서 해당 쿼리를 수행 할 수 있습니까? 컨트롤러에 있어야한다고 생각해. 그렇지? 주문해야하는 블레이드 템플릿에 foreach 루프가 있습니다. – robk27