質問

マゼントオーダーグリッドに複数の列を追加しています。

if ($block->getId() == 'sales_order_grid') { 
             $data=Mage::getModel('name/name')->getCollection()->setOrder('position','ASC');
            foreach($data as $dat)
            {
            $block->addColumnAfter(
                'some name',
                array(
                    'header'   => 'name',
                    'align'    => 'left',
                    'index'    =>  $dat->getId(),
                      'renderer'  => 'renderer class',

                    'sortable'  => false,

                    'type' => 'options',
                    'options' => $this->_getOptions($dat->getId()),

                    'filter_condition_callback' => array($this, '_filtercolumn'),

                ),
                'id_of_column_to_be_after'
            );
             $block->sortColumnsByOrder();
            }
        }
.

これはフィルタコード

です
public function _filtercolumn($collection, $column)
    {
        if (!$value = trim($column->getFilter()->getValue())) { 
        return;
    }
$collection->getSelect()->join('tablename')->where("`tablename`.order_id=`main_table`.entity_id AND `tablename`.column1='$value' AND  `tablename`.column2='$columnid'");

    $collection->printLogQuery(true);


    return $collection;
}
.

役に立ちましたか?

解決

クエリが正しく書き込まれていない場合は、これを試してください

$collection->getSelect()->join(array('tablename' => 'YOURTABLENAME'),
            'tablename.order_id = =`main_table`.entity_id'  
        AND `tablename`.column1='$value' AND  `tablename`.column2='$columnid'",
            array('*')
        );
.

必要に応じてCollectionのコレクションのクローンを作成し、クローン

で結合クエリを追加します。
$cloneCollection=clone $collection
.

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top