Как присоединиться к коллекциям в Magento?

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

Я могу получить продукты с именем продукта следующим образом:

Mage:: getModel ( 'Каталог/продукта') → getCollection() → addAttributeToSelect ( 'имя');

и я могу получить свою собственную коллекцию с помощью:

Маг:: getResourceModel ( 'xyz_mymodule/model_collection');

Как мне присоединиться к двум, так что коллекция модулей является первичной коллекцией, а идентификатор, возвращаемый $model- > getId(), по-прежнему является идентификатором моей пользовательской коллекции?

Ответ 1

Здесь у вас есть рабочий пример:

$collection = Mage::getModel('sales/order')->getCollection();
$collection->getSelect()->join( array('order_item'=> sales_flat_order_item), 'order_item.order_id = main_table.entity_id', array('order_item.sku'));

Приветствую, надеюсь, что это поможет.

Ответ 2

Просто быстрая коррекция мне пришлось добавить кавычки в имя таблицы: array ('order_item' = > 'sales_flat_order_item'), Также getSelect() не требуется, поскольку третьим аргументом является список атрибутов. Конечный аргумент указывает тип соединения, которое вы хотели бы использовать.

Моя версия выглядела так:


$collection = Mage::getResourceModel($this->_getCollectionClass());
$collection->join(array('order'=> 'sales/order'),'order.entity_id=main_table.entity_id', array('po_number'=>'po_number', 'imi_customer_email' =>'imi_customer_email'), null,'left');
$this->setCollection($collection);`