mysql – Vapor 3中与Fluent的多对多关系
作者:互联网
我想知道如何使用Fluent和FluentMySQL在Vapor 3中创建多对多关系,如Vapor 2 docs中所述
遗憾的是,docs for Vapor 3还没有更新,并且Pivot协议的实现已经改变.
这是我正在尝试做的事情:我有两个类,用户和社区.社区拥有成员,用户可以是多个社区的成员.
目前,我的代码如下所示:
import Vapor
import FluentMySQL
final class Community: MySQLModel {
var id: Int?
//Community Attributes here
}
final class User: MySQLModel {
var id: Int?
//User Attributes here
}
extension Community {
var members: Siblings<Community, User, Pivot<Community, User>> {
return siblings()
}
}
但是,这会导致以下编译器错误:
不能专门化非泛型类型’Pivot’和使用’Pivot’作为符合协议’Pivot’的具体类型不受支持.
我已经看到有一个名为ModifiablePivot的协议扩展,但我不知道如何使用它,因为在任何地方都没有文档或示例代码.
任何帮助表示赞赏.提前致谢!
解决方法:
Fluent 3不再提供Fluent 2中的Pivot等默认枢轴.您应该做的是创建一个符合Pivot的类型. FluentMySQL中有一些帮助器类型.
final class CommunityUser: MySQLPivot {
// implement the rest of the protocol requirements
var communityID: Community.ID
var userID: User.ID
}
然后使用CommunityUser代替Pivot< Community,User>.
标签:mysql,swift,vapor 来源: https://codeday.me/bug/20190611/1216037.html