2013-01-31 107 views
4

通過檢查銷售模塊的配置,有sales_entity部分如下是Magento的銷售EAV

<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,顯示出銷售/訂單EAV風格,但不是平的。 我也可以找到表「eav_entity_type」有很多與「訂單」相關的記錄。

但是,我經歷了代碼,不幸的是,EAV在當前的代碼庫(至少v1.7)中並沒有終於到位。 任何人都可以幫助澄清?銷售/訂單的EAV是否已過時?

回答

7

在最新版本的Magento中(即1.6和1.7,以前不能說),銷售實體屬性不再存儲在EAV屬性值表中。 Mage_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/

+0

文章很好,謝謝! –

+0

那麼,訂單,發票,貸記憑證,發貨都不是EAV結構? –

2

我比較老的Magento版本,發現1.4.0.1兩個版本之間的銷售訂單模式有很大的不同和1.4.1.0

加入此文件來創建sales_flat_order和刪除訂單EAV表 法師/銷售/ SQL/mysql4升級-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) 
    ); 
} 

資源c姑娘文件Mage_Sales_Model_Mysql4_Order改爲從Mage_Sales_Model_Mysql4_Order_Abstract而不是Mage_Eav_Model_Entity_Abstract

擴展的Magento還注意到,對從EAV到平板銷量變化對這個版本可能是一個非常沉重的操作。

我相信我們不能使用EAV作爲與產品或客戶相同的訂單。

+0

所以我們知道我們從eav切換到flat的確切點,這對那些想要獲得eav的人可能會有所幫助。另一方面,即使對於產品表,除了通過reindex過程的eav之外,我們還有平面表。希望magento社區可以爲這些版本提供更多的性能統計信息。 –