【问题标题】:Many to many relationship react-admin多对多关系 react-admin
【发布时间】:2018-10-29 05:11:24
【问题描述】:

我试图在Datagrid 中显示一个Field,它是多对多关系(中间表)。

我有这些表:

组 - group_subject - 主题

  • 一个组可以有多个主题
  • 一个主题可以连接多个组

group_subject 还具有评分标准和日程安排等属性

这是多对多的关系。我想在<Resource>group 中显示一个组连接到的所有主题。

使用类似<SingleFieldList> 的东西: as this image

我正在使用react-admin。有没有办法在这种关系中获得价值?

【问题讨论】:

    标签: admin-on-rest react-admin


    【解决方案1】:

    最简单的方法是从 react-admin 中隐藏该中间表。无论如何,隐藏这个实现细节是一件好事。您的 API 的用户不应意识到这一点。

    • groups 资源的角度来看,一个组有许多主题,每个主题都有一个group_id,您的API 应该允许通过这个group_id 字段检索主题

    • subjects资源的角度来看,一个主题有很多组,每个组都有一个subject_id,你的API应该允许通过这个subject_id字段检索组

    【讨论】:

    • 我在 Github 上发现 <ReferenceManyField><ReferenceArrayField> 适用于这个用例,但我不能让它们工作。例如,我的 REST API (OData) 端点 User(1)/Roles 返回在 ID = 1 的用户下分配的角色。如果我使用这些组件,我可以指定 referencetarget 道具,但我无法将 React Admin 导航到类似端点User(1)/Roles。用户和角色处于多对多关系,我有数据透视(中间)表来存储关系,所以我在UserRole 表中没有完全引用。对此有何想法?
    • 实际上,即使您的答案没有回答问题,这也不是一个坏主意,而且它似乎是最好的选择,因为“react-admin”无法处理它。我只是设计了后端 dto 来返回直接附加的结果,而不是中间端点。对更新执行相同操作以直接获取最终模型的 ID。对于前端,这种方式不存在中间表,并且可以按预期工作,只需最少的后端工作。
    • react-admin 确实可以处理它,但要付出一定的代价:他们的企业支持包括一个多对多组件:marmelab.com/ra-enterprise/modules/…——我在这里搜索以确定是否有人创建了一个免费的变体。到目前为止没有运气。
    • 您在搜索@SomeCallMeTim 方面取得了进展吗?让我感到奇怪的是,这并不是一开始就使用 react admin 的交易破坏者。
    • 对不起,那个项目最终转移到了不同​​的平台,我根本不需要解决这个问题。不过,老实说,为组件付费不应被视为自动破坏交易。开发者得吃饭。
    【解决方案2】:

    来自react-admin 文档<ReferenceField> 可用于此目的。更多关于documentation。也许这是一个很晚的答案,但我认为这对其他人有帮助。

    【讨论】:

    猜你喜欢
    • 2012-10-20
    • 1970-01-01
    • 2011-08-07
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    相关资源
    最近更新 更多