2017-01-04 114 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

在模型對象類(User here)中,prepare方法可以保持未實現,因爲我們不需要從代碼明確創建表。所以應該像

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

但是應該添加一個名爲entity一個靜態變量,它在數據庫映射表名沒有模型類,像下面

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

最後,我們應該將模型添加到與drop.preparations.append(User.self)

液滴的準備陣列因此,我們可以使用具有複雜關係的數據庫中的任何現有表來映射Vapor中的模型對象。

相關問題