我使用的是 Laravel 5.4。想象一下我想展示一些汽车广告。我将从表中获取所有汽车记录并将其加载到我的页面中。现在,我想在侧边栏中显示多个类别及其计数(汽车类型、汽车颜色、汽车燃料),并且我想显示每个类别的计数。
例如:我们有 10 个汽车广告,其中两个是红色,三个是绿色,五个是白色。我想在侧边栏中添加这样的内容:
red(2)
green(3)
white(5)
我用SQL groupBy
做到了:
$colors = DB::table('advertisments')->select('color_name', DB::raw('count(color_name) as total_color'))->groupBy('color_name')->get();
$gearboxes = DB::table('advertisments')->select('gearbox', DB::raw('count(gearbox) as total_gearbox'))->groupBy('gearbox')->get();
$param = ['colors' => $colors,'gearboxes' => $gearboxes];
return view('ads' , compact('ads','param'));
但是,我有数十个类别,我无法使用一个 groupBy 来完成此操作,因此查询数量会太多。 有没有办法通过单个查询或更少的查询来完成此操作?
最佳答案
您可以使用数组来轻松遍历不同的列。
$params = [];
$columns = [
'colors' => 'color_name',
'gearboxes' => 'gearbox',
// put your other columns in this array
];
foreach($columns as $name => $column)
$params[$name] = DB::table('advertisments')->select($column, DB::raw('count(' . $column . ') as total'))->groupBy($column)->get();
return view('ads' , compact('ads','param'));
关于php - 如何在 Laravel 中对多个字段进行计数分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46539392/