2013-08-14 8 views
10

Sto cercando di unirmi a una raccolta personalizzata con prodotti per mostrare il nome del prodotto (non solo l'id) nel widget della griglia di amministrazione. Finora non riesco a trovare la sintassi corretta.Come partecipare alle raccolte in Magento?

sono in grado di recuperare i prodotti con il nome del prodotto dal seguente:

Mage :: getModel ('/ Catalogo della merce') -> GetCollection() -> addAttributeToSelect ('name');

e posso recuperare la mia collezione personalizzata con:

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

Come unisco i due in modo che la raccolta di moduli sia la raccolta primaria e l'ID restituito da $ model-> getId() sia ancora l'id della mia raccolta personalizzata?

risposta

22

Qui avete un esempio di lavoro:

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

Saluti, spero che aiuta.

+0

che ha lavorato proprio come avevo bisogno una volta ho messo la mia tabelle che ho usato:. – user2683224

+2

$ Collezione> getSelect() -> join (array (' prodotto '=> 'catalog_product_flat_1'), \t \t \t \t \t \t \t \t \t \t \t \t' product.entity_id = main_table.produ ct_fk', \t \t \t \t \t \t \t \t \t \t \t array ('*', \t \t \t \t \t \t \t \t \t \t \t \t "nome_prodotto" => "product.name", \t \t \t \t \t \t \t \t \t \t \t \t "container_name" => "main_table.nome", \t \t \t \t \t \t \t \t \t \t \t \t) \t \t \t \t \t \t \t \t \t \t \t \t);? – user2683224

+0

Perfetto, felice di sapere che funziona –

1

Solo una breve correzione ho dovuto aggiungere le citazioni sul nome della tabella: array ('order_item' =>'sales_flat_order_item'), anche getSelect() non è necessaria in quanto il terzo argomento è la lista di attributi. L'argomento finale specifica il tipo di join che si desidera utilizzare.

La mia versione si presentava così:


$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);` 
+0

Grazie, ho perso quelle citazioni :) –