深入探讨Magento内部,而不是寻找具体问题的解决方案,只是试图了解一些实现细节 .
当您在Magento中创建可配置产品,然后创建子简单产品以实现衬衫大小,颜色等等时,Magento将此关系存储在 two 单独的表中 .
catalog_product_relation
catalog_product_superlink_table
为什么这些关系存储了两次?
这是遗留代码,还是产品关系链接和产品“超链接”链接之间存在语义差异?
系统是否期望它们相同,或者这些表是否代表不同的父/子关系是有效的对象状态?
1 回答
Why 是个很好的问题 .
catalog_product_super_link
表仅包含与可配置产品相关的数据 . 除可配置关系外,catalog_product_relation
还包含捆绑和分组产品的关系信息 .围绕可配置产品的所有业务逻辑都是指
catalog_product_super_*
表,例如查找可配置产品的可配置属性和价格更新 .相比之下,
catalog_product_relation
表由非特定于可配置产品的类使用,例如抽象目录产品索引器类 .似乎Magento核心团队希望将逻辑上不同的功能分离到不同的PHP类中,而且还分离到单独的数据库表中 . 可能的优势?我想从理论上讲这种方式更容易改变可配置的产品实现而不会中断索引器的实现 .
这只是一个猜测 - 我没有确认或与某人说话"knows"(心理记录为想象)