2016-08-30 3 views
0

Magentoコレクションを使用しています。フィルターに関する質問があります。 次のPHPコードを実行すると、SQLはいつ実行されますか?コレクションを使用中にmagento sqlを実行したとき

$xxx_collection = Mage::getModel('modulename/xxx')->getCollection(); 
$xxx_collection->getSelect()->limit($limit, $offset); 
$xxx_collection->addFieldToFilter('user', $customerData->getId())->addFieldToFilter('xxx_id', 0); 

最後の行(フィルタコード)はSQLを実行しますか? 2番目のコード(リミットコード)はどうですか? 3行目(addFieldToFilter)を使用しないと、2行目でSQLが実行されますか?

MagentoにSQLを2回実行させたくないので、私はこの質問をしています。オーバーヘッドになります。

+0

getSelect()があなたのSQLを実行します –

答えて

0
$xxx_collection->getSelect()->limit($limit, $offset); 

2行目のコードはクエリを実行しません。 Collectionオブジェクトは、そのload()関数が呼び出されたときにのみクエリを実行します。あなたは、コレクションのクエリを準備した直後にload関数を呼び出すことができます。または、foreachループのようなイテレータ関数でコレクションオブジェクトを使用すると、内部的にload関数を呼び出します。

コードは正常であり、2回実行しません。

+0

私はあなたの答えが正しいかどうかわからない、私は初心者Magento開発者だからです。 しかし、あなたの答えは非常に信頼できるように見えます。 – MomAndDad

関連する問題