在我的控制器中,我有这个原始查询。我正在尝试建立一个鞋店网上商店。下面的代码将我的客户输入的类似商品分组
控制器
$items_counted = DB::select( DB::raw(" select * from (
SELECT COUNT(names) as products
FROM Shop
GROUP BY names
)));
如果客户选择了Masorini鞋和John Foster鞋,则响应应为[{Masorini : 2 }], [{John Foster : 2 }] and not [{Product : 2 }], [{Product : 2 }]
。
我正在尝试获取数据库中正在计数的值(名称)
我该如何实现?
PS:laravel新用户
答案 0 :(得分:0)
尝试一下:
$items_counted = DB::select(DB::raw("select names, sum(names) as sum from Shop GROUP BY names");
$result = [];
foreach ($items_counted as $item) {
$result[$item->name] = $item->sum;
}
答案 1 :(得分:0)
第一个建议是使用查询生成器(甚至更好的是雄辩的ORM)。
这是您可以做的:
$items_counted = DB::table('Shop')
->groupBy('names')
->select('names', DB::raw('COUNT(names) as products'))
->pluck('products', 'names');
当您将其作为JSON响应发送时,它应具有所需的格式。