如何在产品网格中添加自定义SQL调用。
这是我到目前为止所做的:
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('sku')
->addAttributeToSelect('name')
->addAttributeToSelect('attribute_set_id')
->addAttributeToSelect('type_id');
$collection->joinField(
'quantity_in_stock',
'advancedinventory',
'quantity_in_stock',
'product_id=entity_id',
'advancedinventory.place_id=1',
'inner'
);
$this->addColumn('quantity_in_stock',
array(
'header'=> Mage::helper('catalog')->__('Custom Column'),
'width' => '80px',
'type' => 'number',
'index' => 'quantity_in_stock'
));
但这似乎不起作用,我需要从表advancedinventory
中获取值,其中product_id
是该实体的ID,place_id
始终等于1。
任何人都可以提供任何帮助吗?
答案 0 :(得分:1)
解决了它,
为了解决这个问题,我必须制作这个集合:
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('sku')
->addAttributeToSelect('name')
->addAttributeToSelect('attribute_set_id')
->addAttributeToSelect('type_id')
->joinField('quantity_in_stock', 'mage_advancedinventory', 'quantity_in_stock', 'product_id=entity_id', 'place_id=1', 'left');`
$this->addColumn('quantity_in_stock',
array(
'header'=> Mage::helper('catalog')->__('Custom Column'),
'width' => '80px',
'type' => 'number',
'index' => 'quantity_in_stock'
)
);
答案 1 :(得分:0)
你可以使用如下
这是一个简单的例子,您可以将其应用于您的收藏
$collection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('name')
->addAttributeToSelect('sku')
->addAttributeToSelect('price')
->addAttributeToSelect('status')
->addAttributeToSelect('visibility')
->addAttributeToFilter('type_id', array('eq' => 'simple'))
->addFieldToFilter('status', Mage_Catalog_Model_Product_Status::STATUS_ENABLED)
->addAttributeToFilter('visibility', array('neq' => 1));
$collection->getSelect()->join(array('abvinv' => "advancedinventory"), "e.entity_id = abvinv.product_id", array('abvinv.*'))
这里我假设product_id
表
advancedinventory
列
希望这对您有用。
答案 2 :(得分:0)
表的名称应该与magento getResourceModel的定义相同。例如:catalog / category,directory / country_name ...
如果它不起作用,您仍然可以尝试使用$ collection-> getSelect() - > joinLeft(...)编辑选择。