2012-01-27 73 views
3

在Magento中,如何將標準產品收集加入自定義屬性的自定義表中。Magento將產品收集加入自定義屬性的自定義表

因此,例如,我有一個自定義產品屬性warehouse_id和一個自定義表倉庫,現在想要一個具有產品名稱,倉庫名稱的集合。

代碼示例:

$collection = Mage::getModel('catalog/product') 
    ->getCollection() 
    ->joinAttribute('warehouse_id', 'warehouse/warehouse', 'warehouse_id', null, 'inner'); 
var_dump($collection); 

然而,這不起作用,因爲倉庫是一個自定義表/集,而不是在 eav_entity_type表。

談到這個問題各地認爲這可能工作:

$collection = Mage::getModel('warehouse/warehouse')->getCollection()->joinAttribute(etc. 

然而,joinAttribute是不是我的自定義集合的方法。

看過每個例子,每個帖子,wiki例子等,不能掌握如何做到這一點。一個特定的代碼示例將是完美的。

回答

1

我認爲joinAttribute可能可以工作,如果一些參數被改變。我更熟悉join and joinLeft,它更像是直接使用mysql查詢。

$collection = Mage::getModel('catalog/product') 
    ->getCollection()->getSelect() 
    ->joinLeft(array('warehouse_id'=>'warehouse'),'e.warehouse_id = warehouse_id.warehouse_id', array('name')); 
var_dump($collection); 

這是假設您的自定義表的名稱是warehouse以及對應於定製warehouse_id在自定義表中的字段屬性也被稱爲warehouse_id。這也假定您的自定義表中倉庫名稱的字段爲name。你可能需要做的,而不是直接命名錶是這樣的:

$collection = Mage::getModel('catalog/product') 
    ->getCollection()->getSelect() 
    ->joinLeft(array('warehouse_id'=>$this->getTable('warehouse/warehouse')),'e.warehouse_id = warehouse_id.warehouse_id', array('name')); 
var_dump($collection); 

如果沒有工作,與線替換的var_dump行:

echo $this->escapeHtml($collection->getSelect()); 

並張貼在這裏生成的SQL查詢。

相關問題