Magentoからデータにアクセスする方法はいくつかあります:
-
load()=>を使用して、モデルに関連するすべてのデータ(属性)をロードします。それは非常に遅く、パフォーマンスを低下させます。商品の場合、商品ページでのみload()を使用する必要があります(そのページで使用するすべてのデータは単一のオブジェクトに関連しているため、完全に読み込むことができます)
-
コレクションの使用=>オブジェクトのリストを取得する必要がある場合は、(少なくとも)コレクションを使用する必要があります。取得する属性リストを決定するのはあなた次第です。選択/フィルタリングに属性を追加すると、コレクションはバックグラウンドでEAVテーブルなどへのSQL結合を実行できます
-
カスタムSQLの使用=>複雑なオブジェクトを処理する場合、コレクションは遅くなる可能性があります(コレクションは必要のないテーブルへの多くのSQL結合を初期化します)... BDDからデータにアクセスする最後の方法は、ResourceModelに独自のSQLを作成することです
表示するスクリプトには、大きなエラーがあります。コレクションを反復処理するforeach内に完全なモデルをロードします。製品をload()する必要がある場合は、コレクションに属性が見つからなかったためだと思いますか?その場合、属性を取得するためにコレクションを変更するだけで済みます...
たとえば、製品の場合、magentoは、インスタンス化する製品->コレクションに属性を自動的に追加(または削除)する方法を提供します。 (Mage_Catalogのconfig.xmlのfrontend / product / collection / attributes XMLタグを参照してください)