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을 실행합니까? 두 번째 코드 (제한 코드)는 어떻게됩니까? 세 번째 줄 (addFieldToFilter)을 사용하지 않으면 두 번째 줄에서 SQL이 실행됩니까?

Magento에서 SQL을 두 번 실행하지 않기 때문에이 질문을하고 있습니다. 그것은 오버 헤드를 만들 것입니다.

+0

getSelect()가 SQL을 실행합니다 –

답변

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

2 번 줄의 코드는 쿼리를 실행하지 않습니다. Collection 개체는 load() 함수가 호출 될 때만 쿼리를 실행합니다. 컬렉션 쿼리를 준비한 직후에 load 함수를 호출하거나, 컬렉션 객체를 foreach loop와 같은 반복 함수에서 사용할 때 내부적으로 load 함수를 호출 할 수 있습니다.

코드가 정상이며 두 번 실행하지 않습니다.

+0

저는 초심자 magento 개발자이기 때문에 답이 맞는지 모르 십니다. 그러나 귀하의 대답은 훨씬 신뢰할만한 것처럼 보입니다. – MomAndDad

관련 문제