2013-08-14 73 views
10

Tôi đang cố gắng tham gia bộ sưu tập tùy chỉnh với các sản phẩm để hiển thị tên sản phẩm (không chỉ là id) trong tiện ích lưới quản trị. Cho đến nay tôi không thể tìm thấy cú pháp chính xác.Làm cách nào để tham gia bộ sưu tập trong Magento?

Tôi có thể lấy sản phẩm với tên sản phẩm bằng cách như sau:

Mage :: getModel ('Danh mục hàng/sản phẩm') -> getCollection() -> addAttributeToSelect ('name');

và tôi có thể lấy bộ sưu tập tùy chỉnh của tôi với:

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

Làm cách nào để tham gia hai tập hợp để thu thập mô-đun là bộ sưu tập chính và id được trả về bởi $ model-> getId() vẫn là id của bộ sưu tập tùy chỉnh của tôi?

Trả lời

22

Ở đây bạn có một ví dụ làm việc:

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

Chúc mừng, hy vọng nó sẽ giúp.

+0

Đó chỉ làm việc như tôi cần một lần tôi đưa bảng của tôi trong tôi đã sử dụng:. – user2683224

+2

$ collection-> getSelect() -> tham gia (array (' sản phẩm '=> '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 "PRODUCT_NAME" => "product.name", \t \t \t \t \t \t \t \t \t \t \t \t "container_name" => "main_table.tên", \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, vui mừng khi biết nó hoạt động –

1

Chỉ cần một sự điều chỉnh nhanh chóng tôi đã phải thêm dấu ngoặc kép vào tên bảng: array ('order_item' =>'sales_flat_order_item'), Cũng getSelect() là không cần thiết như là đối số thứ ba là danh sách thuộc tính. Đối số cuối cùng chỉ định loại tham gia bạn muốn sử dụng.

phiên bản của tôi trông như thế này:


$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

Cảm ơn, tôi đã bỏ lỡ những trích dẫn đó :) –

Các vấn đề liên quan