在响应中显示列值-Laravel 5.6

时间:2018-07-09 10:37:09

标签: php laravel

在我的控制器中,我有这个原始查询。我正在尝试建立一个鞋店网上商店。下面的代码将我的客户输入的类似商品分组

控制器

   $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新用户

2 个答案:

答案 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响应发送时,它应具有所需的格式。