Magento Admin Order Gridのカスタム複数列フィルタ
-
12-12-2019 - |
質問
マゼントオーダーグリッドに複数の列を追加しています。
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
. 所属していません magento.stackexchange