カスタム注文の列を受注グリッドに追加しようとしていますが、その結合と列をコレクションに追加しましたが、列には何も表示されません。また、フィルタリングしようとすると、次のエラーが表示されます。列が見つかりません:1054 'where句'の 'method'が不明です。。私のコードは大部分のチュートリアルと同じように見えるので、なぜ自分のコラムに支払いデータがないのか分かりません。私は最終的なSQLクエリをエコーし、MySQL Workbenchで実行しました。結果と構文はうまくいくようです。何か不足していますか? sales_flat_order_gridテーブルに列を追加する必要がありますか?私の "かなり"の支払い方法の名前は、私がフィルタに行くときに私が列に表示している支払いコードとうまく合わないかもしれないことに気づいていますが、フィルタオプションで支払いコードを使用するときに同じ問題があります。私は列データを取得した後、その詳細を後で打つことにしました。私はエンタープライズ1.12.0.2を使用しています。Magento管理注文グリッドに支払方法を追加します。
アプリ/コード/ローカル/のmymodule/adminhtml /ブロック/販売/オーダー/グリッド:
protected function _prepareCollection()
{
$collection = Mage::getResourceModel($this->_getCollectionClass());
$collection->getSelect()->joinLeft(array('sfop'=>'sales_flat_order_payment'), 'main_table.entity_id = sfop.parent_id',array('sfop.method'));
$this->setCollection($collection);
return parent::_prepareCollection();
}
protected function _prepareColumns()
{ //edited for brevity...only my additions below![enter image description here][1]
$payments = Mage::getSingleton('payment/config')->getActiveMethods();
$methods = array();
foreach ($payments as $paymentCode=>$paymentModel)
{
$paymentTitle = Mage::getStoreConfig('payment/'.$paymentCode.'/title');
$methods[$paymentCode] = $paymentTitle;
}
$this->addColumn('method', array(
'header' => Mage::helper('sales')->__('Payment Method'),
'index' => 'method',
'filter_index' => 'sfop.method',
'type' => 'options',
'width' => '70px',
'options' => $methods,
));
}
おかげで仕事!私はSQLエラー "あいまいな列parent_id"を取得しましたが、私は 'main_table.entity_id = parent_id'を 'main_table.entity_id = payment.parent_id'に変更しなければなりませんでした。また、テーブルエイリアスを "sfop"から "支払い"に変更したので、addColumn()の呼び出しで対応する変更を "filter_index"オプションに変更する必要があります。 –