通过检查sales模块的配置,可以看到如下所示的sales_entity部分
<models>
<sales>
<class>Mage_Sales_Model</class>
<resourceModel>sales_resource</resourceModel>
</sales>
<sales_entity>
<class>Mage_Sales_Model_Entity</class>
<entities>
<quote>这些类Mage_Sales_Model_Entity_xxx扩展了Mage_Eav_Model_Entity_Abstract,表明sales/order是EAV样式,但不是平面样式。我还可以发现表"eav_entity_type“有很多与"order”相关的记录。
但是,我看了一下代码,遗憾的是,在当前的代码库(至少是v1.7)中,EAV最终还没有到位。有人能帮我澄清一下吗?销售/订单的EAV是否已损坏?
发布于 2013-01-31 18:50:40
在Magento的最新版本中(即1.6和1.7,不能说是早期版本),sales实体属性不再存储在EAV属性-值表中。Mage_Sales模块的资源模型将sales实体连接到扁平表。
您还可以看到,基本销售模型类Mage_Sales_Model_Abstract扩展了Mage_Core_Model_Abstract,基本销售资源模型Mage_Sales_Model_Resource_Abstract扩展了Mage_Core_Model_Resource_Db_Abstract -这两种模型都不是EAV模型或EAV资源模型。
您在表eav_entity_type中找到的属性-实体元数据类似于Catalog和Customer模块的EAV实体,但属性值存储系统不是EAV。
我猜,您遇到的配置是为了向后兼容。
我整理了一个关于Magento的EAV系统的描述,你可能会发现它很有趣:http://www.divisionlab.com/solvingmagento/magento-eav-system/
发布于 2014-02-19 14:52:29
我比较了旧的Magento版本,发现1.4.0.1和1.4.1.0两个版本在销售订单模型上有很大的不同
添加此文件是为了创建sales_flat_order和删除订单EAV表Mage/Sales/sql/mysql4-upgrade-1.3.99-1.4.0.0.php -第1144行
// Remove previous tables
$tablesToDrop = array(
'sales_order_entity_decimal',
'sales_order_entity_datetime',
'sales_order_entity_int',
'sales_order_entity_text',
'sales_order_entity_varchar',
'sales_order_entity',
'sales_order_decimal',
'sales_order_datetime',
'sales_order_int',
'sales_order_text',
'sales_order_varchar',
'sales_order'
);
foreach ($tablesToDrop as $table) {
$table = $installer->getTable($table);
if (!$installer->tableExists($table)) {
continue;
}
$installer->getConnection()->query(
'DROP TABLE ' . $installer->getConnection()->quoteIdentifier($table)
);
}资源类文件Mage_Sales_Model_Mysql4_Order已更改为从Mage_Sales_Model_Mysql4_Order_Abstract扩展,而不是Mage_Eav_Model_Entity_Abstract
Magento还指出,这个版本从EAV到持平销售的变化可能是一个非常繁重的操作。
我相信我们不能再像产品或客户一样使用EAV来处理订单了。
https://stackoverflow.com/questions/14622845
复制相似问题