我有下一个疑问:
在EAV数据结构中,您可以在实体或相关类型的表中找到属性。
例如:
catalog_product_entity
| entity_id | entity_type_id | attribute_set_id | type_id | sku | has_option | ....
| 1 | 4 | 34 | simple | 0912132 | 0 |
catalog_product_entity_datetatime
| value_id | entity_type_id | attribute_id | store_id | entity_id | value
| 1 | 4 | 71 | 0 | 1 | NULL
catalog_product_entity_decimal
| value_id | entity_type_id | attribute_id | store_id | entity_id |value
| 1 | 4 | 69 | 1 | 1 | 29.009
您可以在平面表catalog_product_entity中找到属性sku,并在表 catalog_product_entity_datatime 和中找到attribute_id 71 和 69 catalog_product_entity_decimal
为什么实体表中的属性为sku?是因为优化原因吗?
如果我想改善属性的负载,我可以将它插入实体表中吗?实体表中的合理数量的属性是什么?
答案 0 :(得分:1)
为了正确保存任何EAV对象,这些属性(类型为static)是必需的,而不会覆盖save()
方法或每种实体类型的保存中涉及的其他方法。
您可以查看此方法Mage_Eav_Model_Entity_Abstract::_collectSaveData()
。所有EAV实体模型都扩展Mage_Eav_Model_Entity_Abstract
,并在保存实例时调用该方法
所有静态属性都将添加到数组$entityRow
中。这意味着它们将保存在主表中,但您仍然可以选择将backend_model
附加到静态属性,该属性将在实际保存完成之前处理要保存的值。