【发布时间】:2020-07-02 03:30:30
【问题描述】:
考虑两个表 lectors、lessons 及其 Eloquent 模型 Lector 和 Lesson。
Lectors表格内容:
| id | name |
| 1 | John |
| 2 | Jack |
Lessons表格内容:
| id | state | lector_id |
| 1 | new | 1 |
| 2 | new | 1 |
| 3 | old | 1 |
| 4 | new | 2 |
我想查询数据库以获取每个讲师的新课程数量和旧课程数量。 示例数据库输出是
| id | name | count_new | count_old |
| 1 | John | 2 | 1 |
| 2 | Jack | 1 | 0 |
我对现阶段的查询并不特别关注。我希望我的 API 返回如下 JSON 结果。这就是我正在努力使用 Lumen/Eloquent 做的事情。
[
{
"id": 1,
"name": "John",
"count_new": 2,
"count_old": 1
},
{
"id": 2,
"name": "Jack",
"count_new": 1,
"count_old": 0
}
]
我对避免单独查询表然后循环代码中的内容的一般方法感兴趣,正如我在互联网上看到的那样。这似乎是错误的。是否可以使用 Eloquent 中可用的 API 来做到这一点?在文档中没有找到太多帮助。我得到的最接近的是subJoins。
【问题讨论】:
-
你有什么尝试吗?展示你的作品。
-
@miken32 我确实尝试了 subJoins,它一直有效,直到我添加第二个聚合 .. 然后它乘以 json 数组中的结果数。普通连接创建了一个平面结构,其中讲师重复。这是一个提出一般问题的简单案例。我还有更复杂的查询,我想将客户端数组与聚合一起添加到每个讲师
-
@JonasStaudenmeir 我上个月来回阅读文档,但错过了这一部分!看起来很有希望,我会试一试,谢谢!
-
@JonasStaudenmeir 非常感谢!它完美地工作......结果查询不是我能想象的最好的,但它只是一个查询,代码非常好。请发表您的评论作为答案,我会接受它
标签: php mysql laravel eloquent lumen