如何设置与自身和另一个模型都有多对多关系的模型并允许排序?

How to setup model that has a many to many relationship to both itself and another model and allow sorting?

我有一个 Collections table、一个 Components table 和一个 pivot table 用于集合和组件之间的多对多关系。这让我可以创建 'Collections' 个 'components'。我正在使用 rutorika-sortable 来启用组件排序。

问题是我还希望一个集合可以与另一个集合相关联。我尝试了 'Collection-Collection' 枢轴 table,我 运行 遇到的问题是我无法再弄清楚如何处理排序。例如,我希望 组件 A集合 B组件 B 属于 Collection A 并在查看 Collection A 时按该顺序显示。排序不再有效,因为两个枢轴中的顺序列彼此独立。

我想我需要某种多态关系,但我不确定最好的方法是什么。我怎样才能达到我想要的结果?

我不确定这是否是最好的方法,但为了解决这个问题,我添加了一个 一对一 关系,其中 collections hasOne component 除了现有的 many-to-many 关系。

现在,填充了 collection_id 字段的组件将作为该集合的一种别名。然后,当我遍历链接到一个集合的所有组件时,我可以检查它们是否链接到另一个集合并采取相应的行动。

主要的缺点是,从现在开始,在组件和集合可以通过多对多链接之前,我需要检查以确保它们在一对一,反之亦然,以防止递归。