Mysql 将模型对象链接到Vapor中的现有数据库表
我有一个数据库,其中映射了一些复杂的关系,并填充了大量数据。我的要求是,我需要使用这个数据库与Swift蒸汽服务器 因此,我创建了一个类似于数据库模式的模型对象(使用Fluent框架结构),以便处理vapor服务器和db之间的数据流 当需要将数据库表(users表)与模型(User模型)链接时,我发现了这个方法,它应该在model类中实现Mysql 将模型对象链接到Vapor中的现有数据库表,mysql,swift,vapor,perfect,Mysql,Swift,Vapor,Perfect,我有一个数据库,其中映射了一些复杂的关系,并填充了大量数据。我的要求是,我需要使用这个数据库与Swift蒸汽服务器 因此,我创建了一个类似于数据库模式的模型对象(使用Fluent框架结构),以便处理vapor服务器和db之间的数据流 当需要将数据库表(users表)与模型(User模型)链接时,我发现了这个方法,它应该在model类中实现 static func prepare(_ database: Database) throws { try database.create("use
static func prepare(_ database: Database) throws {
try database.create("users") { users in
users.id()
users.string("name")
}
}
因为我不需要为已经存在的数据库定义模式,所以这个prepare方法没有实现
结果是,对于任何操作,如userObj.save()
在模型对象内部的以下方法实现的帮助下,我使用Swift Perfect Server实现了同样的功能。这是在Perfect的帮助下完成的
// Map the model to the database table "user"
override open func table() -> String {
return "user"
}
我正在寻找的是
->
在Vapor中是否有类似的选项可用,以便我可以将模型对象映射到数据库表?在Slack社区讨论此问题时得到了一个解决方案,经过试用,效果良好
解决方案:
在模型类中(比如说User
),可以不实现prepare
方法,如
static func prepare(_ database: Database) throws {
}
但是应该添加一个静态变量entity
,它将映射表名,如
final class User: Model {
static let entity = "users"
...
}
最后,我们应该将模型添加到数组中,如
// Let the User be your model object
drop.preparations.append(User.self)
因此,我们可以使用任何具有复杂关系的现有数据库或预填充的数据表与模型对象进行映射,而无需从模型对象构建表。数组应该位于何处?