3
パフォーマンス:すべての製品タイプの製品リストlist.phtmlに在庫在庫レベルを追加します
TL; DRの要件は、Magentoのフレームワークに準拠したパフォーマンスを念頭に置いて、追加のクエリ/メモリを最小限に抑えて、在庫の在庫レベルをカテゴリ製品リストページに表示することです。 スケーラビリティのためのプリロードに関するVinai Koppの記事を読んだ後。 パフォーマンスのために追加のクエリ/ロードをできるだけ少なくして、カテゴリ製品リストページ(list.phtml)に在庫在庫レベルを含める最良の方法は何ですか? 私はいくつかのアプローチを知っています: afterLoad()は、media_gallery追加のクエリなしでインクルードしてもうまく機能するように見えますが、インベントリで同じアプローチを実装することに成功していません。 $attributes = $_product->getTypeInstance(true)->getSetAttributes($_product); $media_gallery = $attributes['media_gallery']; $backend = $media_gallery->getBackend(); $backend->afterLoad($_product); product_idたとえば、キーを使用してコレクションと並行して必要なデータを収集するようにSQLに指示します。しかし、フレームワークを通じてより多くの手段を探しています。 現在、私は単に次のstock_item方法でオブジェクトをロードしています: $_product->load('stock_item')->getTotalQty(); これは機能しますが、コレクション内のすべての製品の在庫在庫合計を取得するためのクエリが追加されていることに気付きました。 ... __EAV_LOAD_MODEL__ (Mage_Catalog_Model_Product, id: stock_item, attributes: NULL) __EAV_LOAD_MODEL__ (Mage_Catalog_Model_Product, id: stock_item, attributes: NULL) __EAV_LOAD_MODEL__ (Mage_Catalog_Model_Product, id: stock_item, attributes: NULL) ... 奇妙なことに、これは動作します。魔法はMage_Eav_Model_Entity_Abstract-> load($ object、$ entityId、$ attributes)で発生します。$ attributesが空の場合、loadAllAttribute($ object)を呼び出します。したがって、$ product-> load( …