我有一段时间没碰后端了。。所以请原谅我,如果这是超级简单。我在用lumen v.5.6.1。
| table.sets | | table.indexed_items |
|----------------| |---------------------------------|
| ID | SET | | ID | setId | itemId | have |
|----|-----------| |----|-------|--------|-----------|
| 1 | set name 1| | 1 | 3 | 1 | 2 |
| 2 | set name 2| | 2 | 3 | 2 | 1 |
| 3 | set name 3| | 3 | 3 | 3 | 4 |
| 4 | 2 | 4 | 1 |
| 5 | 2 | 5 | 3 |
| 6 | 2 | 6 | 1 |
如何在一个查询groupedby/distinct by setid(set name作为左连接?)中返回如下返回:
[
setId: 2,
name: 'set name 2',
haveTotal: 5,
],
[
setId: 3,
name: 'set name 3',
haveTotal: 7,
]
3条答案
按热度按时间6jygbczu1#
如果你正在使用或想使用雄辩,你可以这样做:
$sets = App\Sets::withCount('indexed_items')->get();
这将返回具有列名的集合indexed_items_count
显然,您需要根据您的型号名称进行更改。这是文件
wgeznvg72#
我总是在我的项目中使用计数关系记录。
nkkqxpd93#
这是一个原始的mysql查询,应该可以工作。要将其转换为laravel应该不需要太多的工作,尽管您可能需要使用
DB::raw
一两次。演示
如果不想返回在
indexed_items
表,则可以删除对的调用COALESCE
,也可以使用内部联接而不是左联接。注意,使用
SET
命名表和列不是一个好主意,因为它是一个mysql关键字。