I am working on a project where there is custom column
already installed on sales_flat_order
table.
I know, in order grid magento uses sales_flat_order_grid
table to fetch data.
I have used join
technique and works fine, all filters are also working except filter by status
.
My code on my Grid.php
/**
* @brief add custom_column
* @param Mage_Sales_Model_Resource_order_grid_collection $collection
*/
public function setCollection($collection)
{
$collection->getSelect()->join(array('s' => 'sales_flat_order'), 'main_table.entity_id=s.entity_id', 'custom_column');
//Mage::log((string) $collection->getSelect(), null, 'order-grid.log');
parent::setCollection($collection);
}
protected function _prepareColumns()
{
$this->addColumn('custom_column', array(
'header' => Mage::helper('sales')->__('custom column'),
'index' => 'custom_column',
//'filter' => 's.custom_column',
'type' => 'currency',
'renderer' => 'DigitalCinema_Pos_Block_Adminhtml_Sales_Order_Renderer_Grid',
));
return parent::_prepareColumns();
}
With this all filters work (not sure why it works even without filter
tag in my custom column),
and when I do filter by status then it tells me
Integrity constraint violation: 1052 Column 'status' in where clause is ambiguous
Now
When I put 'filter' => 's.custom_column',
back, I get following error:
Fatal error: Call to a member function setColumn() on boolean in \app\code\core\Mage\Adminhtml\Block\Widget\Grid\Column.php on line 370
I even tried putting 'filter_index' => 's.custom_column'
too, but same result.
It's driving me insane.