Filter product collection by custom attribute
-
16-10-2019 - |
Question
I'm filtering a product collection by the custom attribute ean
with the following code
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('name');
$collection->addAttributeToSelect('ean');
$collection->addFieldToFilter('ean', '678678');
foreach ($collection as $product)
{
Mage::Log('product found');
}
There is product with this ean but no product is found.
Solution
The methods addFieldToFilter()
and addAttributeToFilter()
are the same.
/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php:339
/**
* Wrapper for compatibility with Varien_Data_Collection_Db
*
* @param mixed $attribute
* @param mixed $condition
*/
public function addFieldToFilter($attribute, $condition = null)
{
return $this->addAttributeToFilter($attribute, $condition);
}
I would try to remove the filter, then loop over the collection and check the values of ean. What query is fired?
Maybe some observer hooks into catalog_product_collection_load_before
and the query is altered and filters are added?
Load the collection and then check echo (string)$collection->getSelect()
. After(!) the ->load()
.
OTHER TIPS
try and use
$collection->addAttributeToFilter('ean', '678678');
This post gives some nice pointers on using collections
Maybe this:
$collection->addFieldToFilter('ean', '678678');
should be:
$collection->addAttributeToFilter('ean', '678678');
Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange