Magento如何创建SQL查询以加载具有整数和varchar过滤器值的EAV模型?

时间:2015-12-17 14:32:35

标签: php magento magento-1.9

我期待着了解Magento的ORM如何将查询过滤器分解为实际的SQL以运行查询以获取模型的EAV数据(比如类别)?

1 个答案:

答案 0 :(得分:1)

在magento中,通常使用集合从数据库加载数据。集合提供了诸如 addAttributeToFilter()之类的方法。使用这些,您可以指定要实际加载的行。在后台,magento正在考虑EAV模型的同时构建SQL查询。一旦加载()集合,SQL查询就会在数据库上实际执行。

示例:您要加载具有 my_att 属性和值 my_val 的产品。第一步是获取集合:

#Value

现在您可以过滤属性:

$productCollection = Mage::getModel('catalog/product')->getCollection(); 

要了解发生了什么,您可以通过以下方式获取为您构建的实际SQL查询magento:

$productCollection->addAttributeToFilter('my_att', array('eq' => 'my_val')); 

正如您所见,magento构建了考虑EAV模型的SQL查询(加入正确的表,如 catalog_product_entity_varchar )。有关EAV模型以及如何在magento中组织属性的更多信息,我强烈推荐认证学习指南(http://info2.magento.com/rs/magentoenterprise/images/Certification-Study-Guide-MCD-v1.pdf)。