gpt4 book ai didi

php - 如何在 Laravel 中对多个字段进行计数分组

转载 作者:行者123 更新时间:2023-11-29 10:35:13 30 4
gpt4 key购买 nike

我使用的是 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com