如果您有下表:
$roles = Role::whereHas('users', function($users) use($userId) {
$users->where('id','=',$userId);
})->get();
我想得到这些结果
ID, item
1, A
2, A
1, A
1, B
3, C
每种项目类型应有一个列。在理想环境中,我不需要提前获得这些项目类型。
是否可以通过SQL查询执行此操作?
答案 0 :(得分:2)
您可以通过 sum()函数使用条件聚合:
select ID,
sum(case when item = 'A' then 1 else 0 end ) as a,
sum(case when item = 'B' then 1 else 0 end ) as b,
sum(case when item = 'C' then 1 else 0 end ) as c
from items
group by ID
答案 1 :(得分:1)