Laravel 5.5 groupBy with sum和first option

时间:2018-02-21 07:29:00

标签: php mysql laravel

我有一个具有相同ID的表,所以我用sum显示了groupBy选项。我有很多列,如id,item_name,rate,quantity,value这是我的代码。

$orders = Order::where('item_id', $id)
    ->where('delivery_status', 1)
    ->groupBy('item_id')
    ->selectRaw('sum(quantity) as quantity, sum(value) as value, item_id')
    ->pluck('item_id','quantity', 'value');

通过这个我得到三列id,数量和价值与总和。我的问题是我还想显示其他列,如item_name,rate,delivery_status等,我不想像速率一样对它们求和。我该如何显示它们?我也可以使用item_name进行分组,但它可以工作但不能与速率分组,因为其他项目也可能具有相同的速率。

1 个答案:

答案 0 :(得分:1)

不要使用pluck,因为它只会返回您指定的列。相反,请尝试使用get返回所有表格列:

$orders = Order::where([
    'item_id' => $id,
    'delivery_status' => 1
])
    ->groupBy('item_id')
    ->selectRaw('orders.*, sum(quantity) as quantity, sum(value) as value, item_id')
    ->get();