2017-01-04 8 views
3

Я построил базу данных MySQL с несколькими таблицами и сложными отношениями, но когда я просматриваю парную документацию, в частности, в фазе модели, существует способ создания таблицы (с которой будет взаимодействовать мой модельный класс) ,Как создать приложение для паров из уже существующей базы данных?

static func prepare(_ database: Database) throws { 
    try database.create("users") { users in 
     users.id() 
     users.string("name") 
    } 
} 

Однако, я не хочу использовать его, потому что таблица, в которой я уже содержат внешние ключи и типы, как DATETIME (которые я не знаю, как объявить в быстром контексте.) Находится там способ связать мои уже построенные таблицы с паром?

ответ

1

Это где-то Vapor (или, вернее, Fluent, который является уровнем базы данных Vapor) немного ограничен.

Да, вы можете использовать существующие таблицы. В вашем методе prepare(_:) вы можете просто оставить реализацию пустой, не создавая таблицу вообще. Вы также должны оставить revert(_:) пустым.

В вашем инициализаторе init(node:in:) и makeNode(context:) вам необходимо сопоставить имена столбцов и типы в таблице и типы свойств в вашей модели Swift.

0

В классе объектов модели (Пользователь здесь) метод prepare может быть оставлен без выполнения, поскольку нам не нужно явно создавать таблицы из кода. Так должно быть, как

static func prepare(_ database: Database) throws { 
    ... 
} 

Но следует добавить статическую переменную entity, которая будет отображать имя таблицы в БД без модели класса, как следующий

final class User: Model { 
    static let entity = "users" 
    ... 
} 

И, наконец, мы должны добавить модель в капли для сбора капель с drop.preparations.append(User.self)

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