web-dev-qa-db-fra.com

Comment rejoindre des collections dans Magento?

J'essaie de rejoindre une collection personnalisée avec des produits pour afficher le nom du produit (pas seulement l'ID) dans le widget de la grille d'administration. Jusqu'à présent, je ne trouve pas la syntaxe correcte.

Je suis en mesure de récupérer les produits avec le nom du produit par les éléments suivants:

Mage :: getModel ('catalogue/produit') -> getCollection () -> addAttributeToSelect ('nom');

et je peux récupérer ma collection personnalisée avec:

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

Comment puis-je joindre les deux afin que la collection de modules soit la collection principale et que l'ID retourné par $ model-> getId () soit toujours l'ID de ma collection personnalisée?

14
user2683224

Voici un exemple de travail:

$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'));

Salutations, j'espère que ça aide.

28
Beto Castillo

Juste une correction rapide, j'ai dû ajouter des guillemets sur le nom de la table: array ('order_item' => 'sales_flat_order_item'), aussi getSelect () n'est pas nécessaire car le troisième argument est la liste d'attributs. L'argument final spécifie le type de jointure que vous souhaitez utiliser.

Ma version ressemblait à ceci:


$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);`
1
Sofian