gpt4 book ai didi

swift - 如何向 Pivot 添加附加信息(使用 Fluent)?

转载 作者:搜寻专家 更新时间:2023-10-30 22:29:29 25 4
gpt4 key购买 nike

在 Vapor 中,我们可以通过创建 Pivot<U, T> 来创建多对多关系。对象,其中 UT是我们想要链接在一起的模型。所以如果我想创建一个系统 User s 可以有多个 File s 和许多 File s 可以属于多个 User s,我会这样关联它们:

var alice = User(name: "Alice")
try! alice.save()
var sales = File(name: "sales.xclx")
try! sales.save()

var pivot = Pivot<User, File>(alice, sales)
try! pivot.save()

我这辈子都想不通的是我该如何制作 Pivot<User, File>包含附加信息?例如,我想知道此文件何时与 Alice 相关联,或者她对该文件拥有哪些权限。

在关系数据库上,Fluent 为 Pivot<User, File> 创建此表类型。

+---------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| file_id | int(11) | NO | | NULL | |
| user_id | int(11) | NO | | NULL | |
+---------+---------+------+-----+---------+----------------+

但我希望能够表示这样的东西:

+---------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| file_id | int(11) | NO | | NULL | |
| user_id | int(11) | NO | | NULL | |
| date | date | NO | | NULL | |
| perms | varchar | NO | | READ | |
+---------+---------+------+-----+---------+----------------+

最佳答案

Pivot<U, T> object 可以被认为是像 siblings 这样的旋转关系的“最低限度”必填字段。 .

如果你想给这个表添加自定义字段,你可以创建自己的类来充当数据透视表,只要它具有所需的元素即可:

  • Foo 的表名和 Barbar_foo (小写,按字母顺序排列)
  • 至少存在三列:id , bar_id , foo_id

换句话说,您的数据透视表类创建的表必须至少包含元素 a Pivot<Foo, Bar>准备工作会产生。

完成此操作后,您可以通过创建和保存枢轴类的实例来创建新的枢轴关系。

.siblings()在使用此数据透视表的模型上调用关系,默认为 Pivot<U, T>仍将被创建以执行提取。但是,这不会产生任何问题,因为数据透视表中存在所需的字段。

关于swift - 如何向 Pivot 添加附加信息(使用 Fluent)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40565582/

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