微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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>.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐