数据库
首页 > 数据库> > mysql – Vapor 3中与Fluent的多对多关系

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