Laravel 查询生成器;用总和得到不同的行

Laravel query builder; get distinct rows with sums

假设我们有一个名为 BoxContents 的 SQL table,每行包含 id、boxID、itemID 和数量。

唯一的值是 id。我需要输入 boxID 并获得 list/array 个 itemID 及其总数量;

示例: 在 BoxContents table:

id boxID 物品编号 数量
1 foo 香蕉 5
2 foo 猴子 1
3 炸弹 2
4 foo 香蕉 5
5 保险丝 2
6 香蕉 5
7 foo 香蕉 5

查询box foo时的结果:

['banana'=>15, 'monkey'=>1]

查询box bar时的结果:

['bomb'=>2, 'fuse'=>2, 'banana'=>5]

我将如何进行查询?

DB::table('BoxContents')
    ->where('boxID', 'foo')
    ->select('itemID', SUM('quantity'))
    ->distinct();

是我目前得到的,但是SUM()select()

中显然不被接受

这可以做到吗?

您可以通过 selectRaw()/DB::raw():

DB::table('BoxContents')
    ->where('boxID', 'foo')
    ->select('itemID', DB::raw("SUM('quantity')"))
    ->distinct();