【问题标题】:Many Many-To-Many relationships Laravel多对多关系 Laravel
【发布时间】:2018-07-04 09:07:40
【问题描述】:

我正在努力实现以下目标: 我正在尝试为类似网站的电子商务设置数据库,并且我有一个 Products 表。每个产品可能有几个 SpecificationsHeader(类似于每个规范组的“标题”),“在”这个 SpecificationsHeader 下可能有许多规范(这些又像“标题”,像“尺寸”),对于这些规范中的每一个,应分配一个值,如“XXL”。我面临的主要困难是使关系正确,因为我希望它们都可以重用。

示例产品 1:

产品:iPhone

SpecificationHeader:'CPU & RAM'

规格:'CPU 速度' - SpecificationValue:'1.4GHz'

规格:'Ram size' - SpecificationValue:'2GB'

...

SpecificationHeader:'相机'

规格:“相机分辨率” - SpecificationValue:“12MP”


示例产品 2:(可能与上述某些值相同或可能完全不同)

产品:三星

SpecificationHeader:'CPU & RAM'

规格:'CPU 速度' - SpecificationValue:'3GHz'

规格:'Ram size' - SpecificationValue:'4GB'

规格:'4G' - SpecificationValue:'是'

...

SpecificationHeader:“网络”

规范:'Something' - SpecificationValue:'somevalue'


我尝试了几个数据透视表,但我显然做错了,因为我管理的最好的方法是获取标题和规范,但没有获取值。 我最新的方法是这样的:

但是所有知道在做什么的人都会发现它非常愚蠢。 所以, 理想的解决方案是: 获取产品会带来一个规范 - 规范值对,分组在规范标题下。

任何帮助将不胜感激!

【问题讨论】:

  • 第一眼看到,你的表命名让人很难理解你的ERD,正确的表名是attributeGroupsattributesvaluesvaluesattributeValuesproductsproductAtrribueValue

标签: php laravel eloquent many-to-many pivot


【解决方案1】:

如果我是你,我只会改变一件事,就是在SpecificationValueSpecification 之间设置belongsTo 关系

像这样:

但它会产生一些限制,例如,如果您有规范 memoryRAM,您将无法为每个规范使用相同的规范值 8 gb

还有一些积极的时刻。 示例:用户向产品size 添加了新规范。您将只显示所需的值,例如 smlxl 等,而不显示来自其他规范的值,例如 3 GbPlastic4x4

【讨论】:

    猜你喜欢
    • 2018-06-15
    • 2018-01-22
    • 2016-02-26
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多