您的位置:首页 > 其它

addFieldToFilter 与 addAttributeToFilter使用总结

2014-10-31 15:27 429 查看
magento初学者在开发过程中,对addFieldToFilter和addAttributeToFilter的使用会比较迷惑,例如你在一个自定义模块中,在引用自己的table时,假如使用了addAttributeToFilter这个function,可能就会报错。
简单分析下原因:
<p>我们在自定义模块里的collection类,因为没有涉及到EAV模型,一般都是继承Mage_Core_Model_Mysql4_Collection_Abstract这个类,而在Mage_Core_Model_Mysql4_Collection_Abstract(继承自Varien_Data_Collection_Db包含很多常用function)和它的父类里,是没有addAttributeToFilter这个function的,如果一定要使用addAttributeToFilter可以在collection加上如下function(或者改变collection的继承关系):</p><p>
</p><p><span style="font-size:18px;color:#FF0000;"><strong><span><span>addFieldToFilter</span></span></strong></span>
</p>

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

/**
* Check if $attribute is Mage_Eav_Model_Entity_Attribute and convert to string field name
*
* @param string|Mage_Eav_Model_Entity_Attribute $attribute
* @return string
*/
protected function _attributeToField($attribute)
{
$field = false;
if (is_string($attribute)) {
$field = $attribute;
} elseif ($attribute instanceof Mage_Eav_Model_Entity_Attribute) {
$field = $attribute->getAttributeCode();
}
if (!$field) {
Mage::throwException(Mage::helper('yourmode')->__('Cannot determine the field name.'));
}
return $field;
}


记录一下Magento模型集合Model Collection中addFieldToFilter()方法常用的过滤条件。以下参数也同样适用于产品实体的addAttributeToFilter()方法。

SQL的DEBUG方法

懒省事了,转载地址:
http://fishpig.co.uk/blog/addattributetofilter-conditionals-in-magent
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: