我正在使用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。它会产生开销。
答案 0 :(得分:0)
$xxx_collection->getSelect()->limit($limit, $offset);
第2行中的代码不会执行查询。 Collection对象仅在调用其load()
函数时才执行查询。您可以在准备集合查询后立即调用load函数,或者在像foreach
循环中的迭代器函数中使用集合对象时调用内部加载函数。
您的代码很好,而不是两次执行。