Pivot<U, T>
在 Vapor 中,我们可以通过创建对象来创建多对多关系,我们希望将模型链接在一起的位置U
和位置。T
因此,如果我想创建一个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 | |
+---------+---------+------+-----+---------+----------------+