Laravel-雄辩的建构-通过数据透视表分组

时间:2018-11-18 12:11:42

标签: laravel

请帮助我构建一个雄辩的查询。我有这张桌子:

Attendances
id | member_id
1  | 1
2  | 2
3  | 3
4  | 4
5  | 5

Members
id | name
1  | Joe
2  | Jane
3  | David
4  | May
5  | John

Positions
id | position_name
1  | art
2  | singer
3  | dancer

member_position
member_id | position_id
1         | 2 
1         | 1
1         | 3
2         | 1
2         | 2
3         | 3
4         | 1
4         | 3
5         | 3

从“出勤”表中,我需要获取每个职位有多少服务员。

所需结果:

Art: 3
Singer: 2
Dancer: 4

提前谢谢!

1 个答案:

答案 0 :(得分:0)

我使用以下代码设法获得了想要的结果:

$member_ids = Attendance::pluck('member_id');

$positions = Position::whereHas('members', function($query) use($member_ids){
                 return $query->whereIn('id', $member_ids);
             })->get();

$datas = [];

foreach($positions as $position){
  $position_id = $position->id;

  $subdata = Attendance::whereHas('member.positions', function($query) use($position_id){
              return $query->where('id', $position_id);
            })->get();

  $datas[] = ['position' => $position->position_name, 'count' => $subdata->count()];
}

return view('viewfile', compact('datas'));

并在我的刀片文件上:

@foreach($datas as $data)
 <td>{{ $data['position'] }}</td>
 <td>{{ $data['count'] }}</td>
@endofreach

希望这对以后的人有帮助。

(我只是回答了我的问题,因为似乎我无法删除它,对那些查看并没有发现有趣回答的人表示歉意)