Ошибка неоднозначности MySQL при объединении нескольких атрибутов пользовательской коллекции
У меня есть пользовательская коллекция, которая в значительной степени состоит только из идентификаторов объектов продукта. Я хотел бы отобразить множество других атрибутов из таблиц EAV, но все они хранятся в столбце value
, что приводит к ошибке
Код ошибки: 1052 Столбец "значение" в списке полей неоднозначен
Какой метод join
я могу использовать в своем методе _prepareCollection();
?
Я пробовал:
$collection->getSelect()->join('catalog_product_entity_varchar', '`catalog_product_entity_varchar`.attribute_id=56 AND `catalog_product_entity_varchar`.entity_id = `main_table`.`product_id`', array('name' => new Zend_Db_Expr((`catalog_product_entity_varchar`.value)));
, Который работает для одного атрибута, но если я попробую несколько Я получаю проблему неоднозначности, даже если я указываю родительскую таблицу.
Буду признателен за любую помощь
1 answers
Вам следует использовать псевдоним при объединении таких таблиц, например
$collection->getSelect()->join(
array('at_name' => 'catalog_product_entity_varchar'),
'at_name.attribute_id = 56 AND at_name.entity_id = main_table.product_id',
array('name' => 'at_name.name')
);
Теперь вы можете присоединиться к catalog_product_entity_varchar
более одного раза. Вероятно, есть лучшие способы доступа к данным EAV, хотя используйте прямой SQL, только если вы знаете, что делаете.