2014-09-19 3 views
2

고객 컬렉션에서 항목을 검색하는 검색 스크립트를 작성하려고합니다. 트릭은 일반적인 "OR"조건은 첫 번째 항목에 대해서만 작동한다는 것입니다. 또한Magento : 고객 컬렉션에서 프로그래밍 방식으로 검색하는 방법

$customers = Mage::getResourceModel('customer/customer_collection') 
     ->addAttributeToSelect('*'); 

    if($_searchTerm = $this->getRequest()->getParam('q')){ 
     $customers->addAttributeToFilter(
      array(
       array('attribute' => 'firstname', 'like' => $_searchTerm), 
       array('attribute' => 'lastname', 'like' => $_searchTerm), 
       array('attribute' => 'email', 'like' => '%' . $_searchTerm . '%'), 
       array('attribute' => 'phone', 'like' => '%' . $_searchTerm . '%'), /* valid field in my collection*/ 
      ) 
     ); 
    } 

나는 "%"와일드 카드로 시도했지만 여전히 적절한 결과 :

내가 지금까지 가지고있는 코드입니다. 여기에 뭔가가 빠졌을 가능성이 큽니다.

감사합니다.

+1

나에게 잘 보입니다. 위 테스트를 수행하면 결과 쿼리가 'WHERE ... (at_firstname.value LIKE'TEST ') 또는 (at_lastname.value LIKE'TEST ') OR (e.email LIKE'% TEST % ') 또는 at_phone .value LIKE '% TEST %'))'이것은 예상됩니다. 정확히 무엇이 잘못 될까요? – clockworkgeek

+0

@clockworkgeek "select"SQL 쿼리를 표시하려면 -> getSelect() 메서드를 사용하고 모든 것이 정상적으로 보입니다. 두 고객이 있습니다 : 이온과 다니엘. 스크립트를 사용할 때 "Daniel"이 아니라 "Ion"고객만을 검색하는 것처럼 동작합니다. "이온"고객에 대한 모든 결과가 표시됩니다. – aki

답변

0

이번에 내 어리 석음이 나를 초과합니다. Magento가 모듈을 사용하여 만든 사용자 지정 특성을 필터링 할 때 몇 가지 문제가있는 쿼리의 다른 특성을 사용했습니다. 저를 도와 주신 것에 대해 @clockworkgeek에게 감사드립니다.

관련 문제