Как присоединиться к коллекциям в 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);`