Laravel - 从多对多表中获取数量

时间:2017-03-09 21:06:01

标签: laravel count many-to-many

所以我想得到一个员工($ id)在不同阶段的所有项目的计数。如下所示:

排队 - 3 进展中 - 7 推出 - 5

我有一个项目表,一个雇员表和一个employee_project表。

如何为特定员工获取项目的各个阶段?这不起作用,因为它列出了每个状态,旁边只有1个:

Bytes/sec

任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以在Employee模型中使用方法:

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