蒸气中的枢轴协议
问题描述:
如何使用相同的对象制作枢轴? 我有这样的尝试,但得到一个MySQL错误:蒸气中的枢轴协议
final class UserParent: Model, PivotProtocol {
var storage = Storage()
typealias Left = User
typealias Right = User
static var leftIdKey: String = "user_id_parent"
static var rightIdKey: String = "user_id_child"
init(row: Row) throws { }
func makeRow() throws -> Row {
let row = Row()
return row
}
}
//MARK: - Preparation
extension UserParent: Preparation {
static func prepare(_ database: Database) throws {
try database.create(self, closure: { builder in
builder.id()
builder.int("user_id_parent")
builder.int("user_id_child")
})
}
static func revert(_ database: Database) throws {
try database.delete(self)
}
}
,然后我有这个我的用户对象
var users: Siblings<User, User, UserParent> {
return siblings()
}
上,但我得到这个MySQL错误
[MySQL Error: Unknown column 'user_parents.user_id' in 'where clause']
答
要完成tanner0101的回答:
您的模型是正确的,但是您的Siblings
实现也必须指定自定义键。
var parentUsers: Siblings<User, User, UserParent> {
return siblings(localIdKey: "user_id_child", foreignIdKey: "user_id_parent")
}
var childUsers: Siblings<User, User, UserParent> {
return siblings(localIdKey: "user_id_parent", foreignIdKey: "user_id_child")
}
在此PR中添加了创建自定义键的功能:https://github.com/vapor/fluent/pull/251请在此处查看测试:https://github.com/vapor /流利/拉/ 251 /文件#DIFF-b6a7113811c9efca25dcc7e0067dafaaR2 – tanner0101