2012-01-31 13 views
4

私は数千の動的IDを持っています。 これで、1000を超えるクエリをdbに送信せずにこれらの製品をロードしたいと考えています。 だから、これは解決策ではありません。複数のオブジェクトをデータベースから読み込み

$products = array(); 
foreach($ids as $id){ 
$products[] = Mage::getModel('catalog/product')->load($id); 
} 

しかし、私は完全製品を必要とするので、これも解決策ではありません。

$products = Mage::getModel('catalog/product')->getCollection(); 
$products->addFieldToFilter('entity_id', array('in', $ids)); 

..だから本当には私を持ってloadそれぞれの製品で、おそらく3000問以上のクエリが発生し、数分かかるでしょうか?

+0

あなたが本当に同じページにロードされた製品の数千を持っている必要がありますか? – dynamic

+1

必要な場合は、しないでください!あなたがそうするように命じられたなら、そうしないと言うでしょう。 1ページに数千をロードすると、古いコンピュータ/ブラウザでメモリの問題が発生する –

+0

質問は、データベースストアから1つのクエリで複数のモデルを取得する方法です。 – hakre

答えて

2

あなたが何か行う必要があります。do

$products = Mage::getModel('catalog/product')->getCollection(); 
foreach (<product attributes> as <attribute code>) { 
    $products->addAttributeToSelect(<attribute code>); 
} 

とその後を

$products->addFieldToFilter('entity_id', array('in', $ids)); 
+0

その後、私は2番目の例の後で同じことをするでしょう:完成していない製品データの集まり、または私はあなたの答えを誤解しましたか?私は '<属性コード>'を検索するのではなく、指定されたIDについて検索したいと思う。しかし、私が言ったように、あなたの答えを誤解している可能性があります。 – Matmarbon

+1

'addAttributeToSelect'を使うと、コレクションによって読み込まれるモデルのeav属性を選択できます。それは今はっきりしていますか? – Zyava

+0

申し訳ありませんが、私は本当に誤解していました。今はすべてが明らかです。しかし、それはまだ本当に良い解決策ではありません..と奇妙な..しかし、私のために働くことができる、アイデアのおかげで。 (=> +1が正しいとはマークされていません) – Matmarbon

関連する問題