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