2017-01-25 21 views
1

私はチャットバックエンドを作成しており、2人のユーザーを含むメッセージ履歴テーブルが必要です。1つのエンティティに2つの同じ親があります

これは正しい方法ですか?

static func prepare(_ database: Database) throws { 
    try database.create("historys") { history in 
     history.id() 
     history.parent(User.self, optional: false) 
     history.parent(User.self, optional: false) 
    } 
} 

ここで、複数のuser_idフィールドのエラーが表示されます。

答えて

1

実際には、準備時にフィールド名を設定することができます。これは有用な拡張である。

ただし、intフィールドを作成しても同じ効果が得られます。お使いのモデルで

static func prepare(_ database: Database) throws { 
    try database.create("historys") { history in 
     history.id() 
     history.int("sender_user_id", optional: false) 
     history.int("recipient_user_id", optional: false) 
    } 
} 

、プロパティsenderUserId: NoderecipientUserId: Nodeがあるでしょう、そしてあなたは、例えば、それらを初期化しますsenderUserId = try Node.extract("sender_user_id")

あなたは、モデルで次の便利なメソッドを使用して、それぞれの関係を取得することができます

func sender() throws -> Parent<User> { 
    return try parent(senderUserId) 
} 
func recipient() throws -> Parent<User> { 
    return try parent(recipientUserId) 
} 
関連する問題