2016-08-30 1 views
0

Ich verwende Magento Sammlung. Ich habe eine Frage zu einem Filter. Wenn ich folgenden PHP-Code ausführe, wann wird SQL ausgeführt?Wenn Magento sql ausgeführt wird, während die Sammlung

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

Die letzte Zeile (Filtercode) wird SQL ausführen? Was ist mit der zweiten (Limit Code) Linie? Wenn ich keine dritte Zeile (addFieldToFilter) verwende, wird die zweite Zeile SQL ausführen?

Ich stelle diese Frage, weil ich nicht möchte, dass mein Magento zweimal SQL ausführt. es wird Overhead machen.

+0

getSelect() wird Ihre sql ausführen –

Antwort

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

Der Code in Zeile 2 führt keine Abfrage aus. Das Auflistungsobjekt führt die Abfrage nur aus, wenn seine Funktion load() aufgerufen wird. Sie können die Ladefunktion direkt nach dem Vorbereiten der Sammlungsabfrage aufrufen, oder sie ruft intern die Ladefunktion auf, wenn Sie das Sammlungsobjekt in der Iteratorfunktion wie in der Schleife foreach verwenden.

Ihr Code ist in Ordnung, und es nicht zweimal ausgeführt.

+0

Ich weiß nicht, Ihre Antwort ist richtig oder nicht, weil ich Anfänger Magento Entwickler bin. Aber Ihre Antwort sieht sehr zuverlässig aus. – MomAndDad

Verwandte Themen