Pivot<U, T>
Vapor では、オブジェクトを作成することで、多対多の関係を作成できます。ここでU
、 とT
は、リンクしたいモデルです。したがって、 が多数の を持ち、多数の が多数の に属することUser
ができるシステムを作成したい場合は、次のように関連付けます。File
File
User
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 に関連付けられたのか、または 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 | |
+---------+---------+------+-----+---------+----------------+