3

Magentoの管理者で特定の機能のカスタムモジュールを作成しています。Adminhtmlグリッド内で、ラインオーダーアイテムをプルしていますが、現在データベースにある各製品に固有のデータもプルする必要があります。

添付されているのは、現在のAdminhtmlグリッドのスクリーンショットです。 Adminhtmlグリッド グリッドに追加の列として製品属性(ブランド、フレーバーなど)を追加する必要があります。どうすればこれを行うことができますか?追加してみました

$collection->join()

_prepareCollection()

機能しますが、結合する正確なテーブルを特定できませんでした(フラットインデックスがオンになっています)。

ありがとう!マーク


先端をありがとう。選択したメニューでEAVオブジェクトを扱っているので、正確には探していたものではありませんが、近いです(賛成)。

これが私が追加することになるコレクションの選択です:

$collection->getSelect()->join('catalog_product_index_eav', '`catalog_product_index_eav`.`entity_id` = `main_table`.`product_id` AND `catalog_product_index_eav`.`attribute_id` = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = "brand")', array('attribute_id'));
$collection->getSelect()->join('eav_attribute_option_value', '`eav_attribute_option_value`.`option_id` = `catalog_product_index_eav`.`value`', array('brand' => 'value'));

この新しいブランド列の入力テキストボックスの機能は本当に必要ありませんが、これをsearch機能させる方法を知っている人はいますか?このエラーの受信:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'brand' in 'where clause'

私は入って診断することができますが、誰かが頭のてっぺんから知っているかもしれないと考えました。

4

1 に答える 1

2

結合で使用するテーブルを把握する必要があります。

$collection->getSelect()->join('sales_flat_order_item', '`sales_flat_order_item`.order_id=`main_table`.entity_id AND `sales_flat_order_item`.parent_item_id IS NULL  ', null);

$collection->getSelect()->join('catalog_product_entity_varchar', '`catalog_product_entity_varchar`.attribute_id=144 AND `catalog_product_entity_varchar`.entity_id = `sales_flat_order_item`.`product_id`', array('models'  => new Zend_Db_Expr('group_concat(`catalog_product_entity_varchar`.value SEPARATOR ",")')))

出典: http ://www.atwix.com/magento/customize-orders-grid/

于 2012-06-19T19:57:30.057 に答える