Magento:addAttributeToFilter和addFieldToFilter的区别addAttributeToFilter和addFieldToFilter之间的区别

Magento:addAttributeToFilter和addFieldToFilter的区别addAttributeToFilter和addFieldToFilter之间的区别

addAttributeToFilter用于过滤EAV集合,并将根据您收集的属性过滤产品。

EAV模型:产品,客户,销售等

addFieldToFilter用于过滤非EAV集合,并将根据表catalog_product_entity中的数据库中的列过滤产品。

EAV模型是例如产品,客户,销售等,因此您可以将addAttributeToFilter()这些实体用于使用。

addFieldToFilter()被映射到addAttributeToFilter()EAV实体。所以你可以使用addFieldToFiler()

您可以查看app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php映射完成的位置:

public function addFieldToFilter($attribute, $condition = null) {
    return $this->addAttributeToFilter($attribute, $condition);
}

addAttributeToSelect(): addAttributeToSelect()用于过滤来自magento数据库的属性

$collections = Mage::getModel('catalog/product')
       ->getCollection()
       ->addAttributeToSelect(array('name', 'price','sku'));

//If we use addAttributeToSelect('*'), then all product attributes will be loaded.

addAttributeToFilter: addAttributeToFilter()用于过滤Magento中的EAV集合,并根据集合中包含的属性过滤产品。

addAttributeToFilter将条件添加到MySQL查询的WHERE部分,用于使用指定的条件从数据库提取产品集合。

$collections = Mage::getModel('catalog/product')
       ->getCollection()
       ->addAttributeToSelect(array('name', 'price','sku'))
       ->addAttributeToFilter('sku', array('like' => '%AM%'))
       ->load();

上面的代码会得到一个产品集合,每个产品都有它的名称,价格和sku。产品集合将被过滤,并且只包含具有SKU WITH AM的产品。
如果我们使用addAttributeToSelect('*'),那么所有的产品属性都会被加载。

addFieldToFilter addFieldToFilter将根据表catalog_product_entity中数据库中的列过滤产品。并用于平面模型。它在Mage_Core_Model_Resource_Db_Collection_Abstract类中定义,因此它在其所有子类中都可用。

$collection = Mage::getModel('news/post')->getCollection();
$collection->addFieldToFilter('file_id',3);
$collection->addFieldToFilter('list_id',array('in'=>array(1,2,3)));

发表评论

发表评论

*

沙发空缺中,还不快抢~