Pivot<U, T>在 Vapor 中,我们可以通过创建对象来创建多对多关系,我们希望将模型链接在一起的位置U和位置。T因此,如果我想创建一个Users 可以有很多Files 并且很多Files 可以属于很多Users 的系统,我会这样关联它们:
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 | |
+---------+---------+------+-----+---------+----------------+