Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

is magento sales eav

By checking sales module's config, there is sales_entity section as below

<models>
<sales>
    <class>Mage_Sales_Model</class>
    <resourceModel>sales_resource</resourceModel>
</sales>
<sales_entity>
    <class>Mage_Sales_Model_Entity</class>
    <entities>
        <quote>

and those class Mage_Sales_Model_Entity_xxx extends Mage_Eav_Model_Entity_Abstract, showing that sales/order is EAV style but not flat one. I can also find table "eav_entity_type" have a lot of records related with "order".

But, I go through the code, sadly, EAV is not at last in place in current codebase (at least v1.7). Can anyone help to clarify? Is EAV for sales/order deperecated?

like image 880
Weimin Wang Avatar asked Dec 26 '22 10:12

Weimin Wang


1 Answers

In the latest versions of Magento (i.e. 1.6 and 1.7, can't say for earlier) the sales entity attributes are no longer stored in the EAV attribute-value tables. The resource models of the Mage_Sales module connect the sales entities to flat tables.

You can also see that the base Sales model class Mage_Sales_Model_Abstract extends Mage_Core_Model_Abstract, and the base Sales resource model Mage_Sales_Model_Resource_Abstract extends Mage_Core_Model_Resource_Db_Abstract - neither of those is an EAV model or an EAV resource model.

The attribute-entity metadata that you find in the table eav_entity_type is similar to the EAV entities of the Catalog and Customer modules, yet the attribute value storage system is not EAV.

I guess, the configuration you encountered is left for the backward compatibility.

I've put together a description of the Magento's EAV system, you may find it interesting: http://www.divisionlab.com/solvingmagento/magento-eav-system/

like image 70
Oleg Ishenko Avatar answered Jan 10 '23 11:01

Oleg Ishenko