Ошибка неоднозначности 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)));

, Который работает для одного атрибута, но если я попробую несколько Я получаю проблему неоднозначности, даже если я указываю родительскую таблицу.

Буду признателен за любую помощь

Author: Moose, 2014-08-28

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, только если вы знаете, что делаете.

 2
Author: fmrng, 2014-08-28 10:12:11