当使用集合执行magento sql时

时间:2016-08-30 11:52:35

标签: php magento

我正在使用Magento系列。我有一个关于过滤器的问题。 如果我执行以下PHP代码,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吗? 第二个(限制代码)行怎么样? 如果我不使用第三行(addFieldToFilter),那么第二行将执行SQL?

我问这个问题,因为我不想让我的Magento执行两次SQL。它会产生开销。

1 个答案:

答案 0 :(得分:0)

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

第2行中的代码不会执行查询。 Collection对象仅在调用其load()函数时才执行查询。您可以在准备集合查询后立即调用load函数,或者在像foreach循环中的迭代器函数中使用集合对象时调用内部加载函数。

您的代码很好,而不是两次执行。