限制给定模型的多对多关系?

时间:2021-07-22 16:29:59

标签: php laravel eloquent relationship php-7.4

我正在构建一个半多态/递归工具来定义给定网站的产品。我将产品分解为组件(具有子功能和选项的功能或选项)、OptionLists(选项列表)和分解为简单选项的选项项(键/值/标签/描述)和 ComponentOptions(添加更多功能和选项的选项)。

为了将这些配置写入规范格式,我使用了 SpecElement 类来读取配置中的各种嵌套级别。 SpecElement 然后有一个 elementType 字段,它告诉它创建一个 ComponentOptionListOptionComponentOption

我想在“类型”实例和存在子功能/选项的任何地方的 SpecElement 模型之间构建多对多枢轴。

但是关系从父类(SpecElement 的附加类)到更多SpecElements,这些SpecElements 需要具有特定的elementTypes

例如 SpecElement 创建一个 OptionList 类型的子对象。该 OptionList 然后将具有关联的“选项”[包装在更多 SpecElement 实例中并附加子对象],它可以是简单的 (elementType = Option) 或添加功能的选项 (elementType = ComponentOption)。 在这种情况下,关系不应指向 OptionListComponent 类型的其他元素,而应仅指向 OptionComponentOption > 类型。

A SpecElement 创建 elementType = Component(或 elementType = ComponentOption 与本示例基本相同)与子组件(elementType = ComponentSpecElements)和另一个选项列表的一组关系(SpecElements of elementType = OptionList) 在这种情况下,subComponents 应该只与 elementType = Component 相关,而 optionLists 应该只与 elementType = OptionList 相关

我知道我可以在创建特定关系时放置很多 if then else 结构来检查,但我想知道 laravel/eloquent 是否内置任何有助于执行这些类型的限制的内容。

0 个答案:

没有答案