受到我最近在SO上看到的另一个问题的启发,我想看看是否有人能解释报价项(Mage_Sales_Model_Quote_Item)和报价地址项(Mage_Sales_Model_Quote_Address_Item)之间的区别?
我想我理解引用项的概念(Mage_Sales_Model_Quote_Item - 映射到sales_flat_quote_item数据库表) - 基本上是客户购物车中的一个订单项,其中包含产品的名称/ sku,数量和任何特殊选项.我不明白的是引用地址项Mage_Sales_Model_Quote_Address_Item - 映射到sales_flat_quote_address_item数据库表)是用于.我看到它有一个与之相关的地址,但那到底是什么?我可以想象它可能与多地址运输(我从未使用过)有关,但这是一个疯狂的猜测.
作为第二个问题(实际上这个问题的全部原因:/),是否存在处理报价项目的自定义模块可以安全地忽略报价地址项的情况?
Rai*_*tef 13
我以前处理过这个问题.
基本上报价项目就像你描述的那样.它表示购物车中包含所有详细信息的订单项.
至于引用地址项,它只是一个对象,它包含对引用项对象的引用,对地址对象的引用以及要发送到此特定地址的引用项中的子集数量(但随后它们复制从引用项到它无用的所有内容).
如果是多过滤结账,则是用于创建多个Magento Order对象的报价地址项(每个订单就像它与报价项的子集分开一样).
当然,这是一个笨重的设计.如果他们只保留报价项数据并添加地址ID字段并完全取消"报价地址项"概念,那会更好.看起来像是过度正常化的情况,这种情况会对他们产生反作用.
想要弄乱购物车的代码可以安全地忽略报价地址项目,以防止只处理一个页面结账(并且禁用多个打包).
如果您还希望在多方检验中正确显示更改,您还必须弄乱报价地址项(这些区域中的代码非常难看).