Magento将产品集合加入自定义属性的自定义表

时间:2012-01-27 01:11:31

标签: 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 个答案:

答案 0 :(得分: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查询。