Answers:
addAttributeToFilter()
用于过滤EAV集合。
addFieldToFilter()
用于过滤非EAV集合。
EAV模型是例如产品,客户,销售等,因此您可以将use 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()
的相关SELECT
部分:对查询部分的引用,仅选择特定的列。addFAttributeToFilter()
用于过滤集合,因此添加到WHERE
零件中。
关于EAV,没有区别。
/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php
public function addFieldToFilter($attribute, $condition = null)
{
return $this->addAttributeToFilter($attribute, $condition);
}
我的假设(尽管我可能是错的)是,对于EAV,它们使用属性命名,因为每个要过滤的属性本身就是一个独立的项目,具有自己的设置,等等。而当不使用EAV时,它只是另一列数据库表,因此名称Field效果很好。
addAttributeToSelect()
vs 之间的区别的问题addAttributeToFilter()
吗?