2017-03-09 70 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