2013-08-14 14 views
10

Próbuję dołączyć do kolekcji niestandardowej z produktami, aby wyświetlić nazwę produktu (nie tylko identyfikator) w widgecie siatki administratora. Do tej pory nie mogę znaleźć poprawnej składni.Jak dołączyć do kolekcji w Magento?

jestem w stanie odzyskać produktów z nazwą produktu brzmienie:

Mage :: getModel ('/ Katalog wyrobów') -> getCollection() -> addAttributeToSelect ('nazwa');

i mogę odzyskać moje niestandardową kolekcję:

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

Jak dołączyć do dwóch, aby kolekcja modułów była kolekcją podstawową, a identyfikator zwrócony przez $ model-> getId() jest nadal identyfikatorem mojej kolekcji niestandardowej?

Odpowiedz

22

Tu masz przykład roboczych:

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

świąteczne, nadzieję, że to pomaga.

+0

To działało tak jak i potrzebne raz Kładę tabel użyłem. – user2683224

+2

$ Collection-> getSelect() -> przyłączyć (array (” Produkt '=> '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 tablica ('*' \t \t \t \t \t \t \t \t \t \t \t \t "PRODUCT_NAME"=> "product.name" \t \t \t \t \t \t \t \t \t \t \t "nazwa_konteneru" => "tabela_tabeli.nazwać” \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

Perfect, miło wiedzieć, że działa –

1

Tylko szybka korekta musiałem dodać cytaty na nazwę tabeli: array („Pozycja_zamowienia” =>„sales_flat_order_item”), także getSelect() nie jest konieczne, jako trzeci argument jest lista atrybutów. Ostateczny argument określa typ łączenia, którego chcesz użyć.

Moja wersja wyglądała tak:


$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

Dzięki, ominąłem te cytaty :) –

Powiązane problemy