gpt4 book ai didi

mysql - 是否可以访问 Vapor 中连接表中的字段?

转载 作者:可可西里 更新时间:2023-11-01 08:39:02 24 4
gpt4 key购买 nike

我有一个 Persons 表和一个 Events 表,它们通过一个 Attents 表相关联,这样当我希望记录一个人将以特定角色参加特定事件的事实时,一个记录就存在于 Attents 表中(例如组织者等):

Persons
+----+-------------+
| id | surname |
+----+-------------+
| 1 | Robinson |
| 2 | Savage |
...

Events
+----+-----------------------+
| id | name |
+----+-----------------------+
| 1 | Half Term Competition |
| 2 | Christmas Competition |
...

attends
+---------+----------+--------+
| eventId | personId | roleId |
+---------+----------+--------+
| 1 | 1 | 1 |
| 1 | 2 | 6 |
...

我想生成一个列表,列出参加事件的人员以及他们在做什么,但我找不到在 Vapor 查询中使用 .join() 来完成此操作的方法。看来您可以对连接表进行过滤,但不包括任何字段。我是否遗漏了什么或者这是不可能的?

我已经尝试过关于以下主题的多种变体:

Person.join(Attends.self).filter(Attends.self,Event.foreignIdKey == eventId)

我得到了正确的人员记录,但无法从加入的参加记录中访问他们的“角色”。

如果我执行原始查询,那么它会返回一个节点表示。我可以使用 Leaf 轻松查看它,但是如何以我希望生成带有图像等的 PDF 的方式迭代它一点也不明显。

最佳答案

Fluent relations 的 Vapor 文档可能是您正在寻找的。

据我所知,您使用的是多对多(兄弟)关系,因此这段代码可能就是您想要的:

extension Persion {
var roles: Siblings<Persion, Role, Pivot<Person, Role>> {
return siblings()
}
}

然后获取角色:

let roles = person.roles.all()

我可能看错了,因为我看不到你的代码,但它应该给你一些指示。

关于mysql - 是否可以访问 Vapor 中连接表中的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46962166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com