Como participar de coleções em Magento?

estou a tentar juntar-me a uma colecção personalizada com produtos para mostrar o nome do produto (não apenas o id) no elemento da grelha de administração. Até agora não consigo encontrar a sintaxe correcta.

Eu sou capaz de recuperar os produtos com o nome do produto pelo seguinte:

Mage:: getModel ('catalog / product') - >getCollection () - >addAttributeToSelect ('name');

E posso recuperar a minha colecção personalizada com:

Mage:: getResourceModel ('xyz_module/model_collection');

Como faço para me juntar aos dois para que a colecção de módulos seja a colecção primária e o id como devolvido por $model->getId() ainda seja o id da minha colecção personalizada?

Author: user2683224, 2013-08-14

2 answers

Aqui tem um exemplo de trabalho:

$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'));
 28
Author: Beto Castillo, 2020-09-07 19:55:21

Apenas uma correcção rápida tive de adicionar aspas no nome da tabela: array ('order_item' => 'sales_flat_order_item' ), Also getSelect () is not necessary as the third argument is the attribute list. O argumento Final especifica o tipo de junção que você gostaria de usar.

A minha versão era assim:
$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);`
 3
Author: Sofian, 2015-07-08 08:46:46