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();
假设我们有一个名为 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();