具有求和和和分组的Laravel模型查询
我有一张这样的桌子:具有求和和和分组的Laravel模型查询,laravel,Laravel,我有一张这样的桌子: |item_name |uom |qty |order_number |bike |pc |1 |101 |ball |pc |2 |102 |bike |pc |5 |103 |car |pc |3 |106 |bike |pc |4 |108 |ball |pc |1 |10
|item_name |uom |qty |order_number
|bike |pc |1 |101
|ball |pc |2 |102
|bike |pc |5 |103
|car |pc |3 |106
|bike |pc |4 |108
|ball |pc |1 |109
|bike |pc |6 |115
|car |pc |1 |111
Item::where('year', 2019)->whereIn('item_name', $saps)
->get();
我想在视图中看到这些数据:
bike - 16 pcs overall:
101 - 1
103 - 5
108 - 4
115 - 6
ball - 3 pcs overall:
102 - 2
109 - 1
等等。。。
我尝试使用此查询,但我认为它不正确,因为它只提供名称和数量总和:
$saps = Item::where('year', 2019)->groupBy('item_name')->selectRaw('item_name, sum(qty) as sum')->get('item_name','sum');
尝试此查询
$saps = Item::where('year', 2019)->selectRaw('order_number, qty')
->groupBy('item_name')
->get();
或
您可以通过以下方式获得初始组:
$saps = Item::where('year', 2019)->selectRaw("SUM(qty) as total, item_name, id")
->groupBy('item_name')
->get();
然后,您可以惰性或急切地加载每个项目的列表
如果使用延迟加载,则可以映射结果,然后根据每个项目延迟加载列表
$saps->map(function($item){
$items = Item::where('year', 2019)->where('item_name', $item->item_name)
->get();
}
或者像这样的急负荷:
|item_name |uom |qty |order_number
|bike |pc |1 |101
|ball |pc |2 |102
|bike |pc |5 |103
|car |pc |3 |106
|bike |pc |4 |108
|ball |pc |1 |109
|bike |pc |6 |115
|car |pc |1 |111
Item::where('year', 2019)->whereIn('item_name', $saps)
->get();
尝试此查询
$saps = Item::where('year', 2019)->selectRaw('order_number, qty')
->groupBy('item_name')
->get();
输出
因为您只选择了item_name和sum,所以您只得到这两个值。这就是SQL group by的工作方式,所以从这个意义上说它是正确的。也许你需要用这种方法来接近你想要的东西,但这是行不通的。它返回带有物料第一个订单号的数量之和name@YasinPatel我想它现在可以工作了,但不会得到想要的准确结果。