2013-10-07 5 views
0

Я пытаюсь фильтровать набор продуктов на основе 2 пользовательских атрибутов и тега, можно фильтровать по обычаю легко атрибуты с:Magento Фильтр товаров по Attribues И Tag

$Products = Mage::getModel('catalog/product')->getCollection(); 

$Products->addAttributeToSelect('name'); 
$Products->addAttributeToFilter('custom_attribute1' , 50); 
$Products->addAttributeToFilter('custom_attribute2' , 20); 

Однако, когда я пытаюсь расширить фильтр с помощью тега:

$Products->joinTable 
     (
      array('relation'=>'tag/relation'), 
       "relation.product_id = e.entity_id AND relation.tag_id = '82'" 
     ); 

я получаю следующее сообщение:

PHP Fatal error: Uncaught exception 'Mage_Eav_Exception' with message 'Invalid joint fields' 

Любую идею о том, как я могу получить все продукты, соответствующие всем условиям (пользовательские атрибуты и тег), спасибо!

ответ

0

попробовать это:

$Products->getSelect()->join(
    array('relation' => $Products->getTable('tag/relation')), 
    "relation.product_id = e.entity_id AND relation.tag_id = '82'" 
); 
+0

Это работало отлично, спасибо. – Ox3

0

Вам необходимо указать третий параметр для метода joinTable. Он должен содержать поля для выбора из объединенной таблицы. Что-то вроде этого:

$Products->joinTable 
(
    array('relation'=>'tag/relation'), 
    "relation.product_id = e.entity_id AND relation.tag_id = '82'", 
    array('*') //all fields 
); 
+0

Я пробовал уже, он терпит неудачу с сообщением: Uncaught исключение 'Mage_Eav_Exception' с сообщением «Неверное имя атрибута: e.entity_id И relation.tag_id '=/ – Ox3

Смежные вопросы