Я обнаружил, что самым простым решением было отключить плоские таблицы и затем получить SQL-запрос, который magento выполняет с помощью параметра -> load (true)
, например
$collection = Mage::getModel('catalog/category')->getCollection();
$collection
->setStoreId($store->getId())
->addAttributeToSelect('*')
->addAttributeToFilter(array(array('attribute'=>'ig_unifeed_ids', 'like'=>"%:".$this->getId().":%")))
->load(true);
затем снова включите плоские таблицы и замените этот код на:
$resource = Mage::getSingleton('core/resource');
$readConnection = $resource->getConnection('core_read');
$query = "SELECT `e`.*, `at_ig_unifeed_ids`.`value` AS `ig_unifeed_ids` FROM `catalog_category_entity` AS `e` INNER JOIN `catalog_category_entity_varchar` AS `at_ig_unifeed_ids` ON (`at_ig_unifeed_ids`.`entity_id` = `e`.`entity_id`) AND (`at_ig_unifeed_ids`.`attribute_id` = '139') AND (`at_ig_unifeed_ids`.`store_id` = 0) WHERE (`e`.`entity_type_id` = '3') AND ((at_ig_unifeed_ids.value LIKE '%:".$this->getId().":%'))";
$collection = $readConnection->fetchAll($query);
С этого момента вам, вероятно, потребуется изменить другой код, например, заменить
$ category-> GetId ()
с
$ категории [ "ENTITY_ID"]
Надеюсь, это немного поможет ...
ПРИМЕЧАНИЕ: это реальное решение для ошибки в модуле IG_Unifeed, которая игнорирует фильтрацию категорий при использовании плоских таблиц.