加入creditmemo_flat_table时
$collection = Mage::getResourceModel('sales/order_creditmemo_grid_collection');
$collection->getSelect()
->join(
array('creditmemo_table' => 'sales_flat_creditmemo'),
'main_table.entity_id = creditmemo_table.entity_id',
array('creditmemo_table.gift_cards_amount')
);当gift_cards_amount存在时,我得到了正确的值,当空不存在时,得到了正确的值。但是对于网格,我需要零而不是空。有人知道怎么解决这个问题吗?
发布于 2013-11-19 09:46:35
select语法提供了IFNULL方法,可以在这里直接使用。
因此,您应该修改select语句。
$collection->getSelect()
->join(
array('creditmemo_table' => 'sales_flat_creditmemo'),
'main_table.entity_id = creditmemo_table.entity_id',
array('IFNULL(creditmemo_table.gift_cards_amount,0) as gift_cards_amount')
);发布于 2013-11-19 10:34:52
您可以通过mysql和magento呈现器的两种方式来实现它,如mysql方式:
$collection->getSelect()
->join(
array('creditmemo_table' => 'sales_flat_creditmemo'),
'main_table.entity_id = creditmemo_table.entity_id',
array('COALESCE(creditmemo_table.gift_cards_amount,0) as gift_cards_amount')
);
ORMagento方式可以为字段设置渲染器,如下所示:
$this->addColumn('title', array(
'header' => Mage::helper('module')->__('Title'),
'width' => '250px',
'align' =>'left',
'index' => 'title',
'renderer' => new Namespace_Module_Block_Adminhtml_Renderer_CheckNull(),
));在块->Adminhtml下创建文件夹,名称为Renderer,文件名为CheckNull.php。就像Block->Adminhtml->Renderer->CheckNull.php一样,在签入页面中,编写如下代码:
<?php
class Namespace_Module_Block_Adminhtml_Renderer_CheckNull extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
public function render(Varien_Object $row) {
if($row->getData('title')==Null)
{
return '0';
}else{
return $row->getData('title');
}
}
}https://stackoverflow.com/questions/20067541
复制相似问题