2017-01-25 4 views
1

Я делаю чат-сервер, и мне нужна таблица истории сообщений, в которой будут два пользователя.Два одинаковых родителя в одном объекте

Это какой-то способ сделать что-то в этом роде?

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: Node и recipientUserId: 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) 
} 
Смежные вопросы