2017-03-09 6 views
1

従業員($ id)のさまざまな段階ですべてのプロジェクトの数を取得したいと考えています。だから、何かのように:Laravel - 多対多テーブルからのカウントの取得

キュー - 3 進行中 - 進水7 - 5

私は、プロジェクトのテーブルと従業員のテーブルとEMPLOYEE_PROJECTテーブルを持っています。

特定の従業員のプロジェクトのステージを取得するにはどうすればよいですか?これはすべてのステータスをリストし、それのすぐ隣に1つだけ表示されているので機能しません。

@foreach ($employee->projects as $project) 
    <h3>{{ $project->stage }}</h3> 
    <h3>{{ count($project->stage) }}</h3> 
@endforeach 

どのようにすればいいですか?

答えて

1

あなたは従業員モデルにメソッドを持つことができます。

public function projectsByStage() { 
    return $this->belongsToMany('App\Project')->groupBy('stage'); 
} 

これは、プロジェクトの段階でグループ化された従業員のプロジェクトを取得します。ブレード・テンプレートで次に

@foreach ($employee->projectsByStage as $stage => $projects) 
    <h3>{{ $stage }}</h3> 
    <h3>{{ count($projects) }}</h3> 
@endforeach 

編集:

私はあなたが別の方法を必要としないと思います。あなたはこれを直接行うことができます。

@foreach ($employee->projects->groupBy('stage') as $stage => $projects) 
    <h3>{{ $stage }}</h3> 
    <h3>{{ count($projects) }}</h3> 
@endforeach 

groupBy method

+0

ありがとうございました!あなたの編集したコードは完璧に動作しました! – robk27

関連する問題