Skip to main content
3 of 3
edited tags
sv3n
  • 11.7k
  • 7
  • 41
  • 73

Magento Admin Order Grid Filter by "Status" giving error while joined with "sales_flat_order" table

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.

Adarsh Khatri
  • 8.4k
  • 3
  • 28
  • 59