【问题标题】:Why is the Relation Between a Configurable Product and a Simple Product Stored Twice?为什么可配置产品和简单产品之间的关系会存储两次?
【发布时间】:2012-01-20 16:21:15
【问题描述】:

在这里深入了解 Magento 内部结构,而不是寻找具体问题的解决方案,只是试图了解一些实现细节。

当您在 Magento 中创建可配置产品,然后创建子简单产品来实现衬衫尺寸、颜色等内容时,Magento 会将这种关系存储在两个单独的表中。

catalog_product_relation
catalog_product_superlink_table

为什么这些关系会被存储两次?

这是遗留代码,还是产品关系链接和产品“超级链接”链接之间存在语义区别?

系统是否期望这些相同,或者让这些表表示不同的父/子关系是有效的对象状态?

【问题讨论】:

  • 不知道2011年怎么样,现在超链接表叫catalog_product_super_link

标签: php mysql magento


【解决方案1】:

为什么是个好问题。 catalog_product_super_link 表仅包含与可配置产品相​​关的数据。 catalog_product_relation 除了可配置的关系外,还包含捆绑和分组产品的关系信息。

所有围绕可配置产品的业务逻辑都参考catalog_product_super_*tables,例如查找可配置产品的可配置属性和价格更新。

相比之下,catalog_product_relation 表由不特定于可配置产品的类使用,例如抽象目录产品索引器类。

似乎 Magento 核心团队不仅希望将逻辑上不同的功能分离到单独的 PHP 类中,而且还希望将它们分离到单独的数据库表中。可能的优势?我想从理论上讲,在不中断索引器实现的情况下,通过这种方式更改可配置产品实现会更容易。

这只是一个猜测 - 我还没有证实或与“知道”的人交谈(mental-note-for-imagine

【讨论】:

  • 一切都更简单。在没有关系索引的情况下开发了可配置类型的产品。它甚至是第一个复合产品类型。当然,当时它有自己的桌子。一旦创建了更多组合,就会创建关系表以统一检索子/父产品的索引和其他需要的功能的逻辑。
  • 啊,这很有道理!感谢您的澄清,伊万。
猜你喜欢
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多