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*/
)
);
}
나는 "%"와일드 카드로 시도했지만 여전히 적절한 결과 :
이
내가 지금까지 가지고있는 코드입니다. 여기에 뭔가가 빠졌을 가능성이 큽니다.감사합니다.
나에게 잘 보입니다. 위 테스트를 수행하면 결과 쿼리가 'WHERE ... (at_firstname.value LIKE'TEST ') 또는 (at_lastname.value LIKE'TEST ') OR (e.email LIKE'% TEST % ') 또는 at_phone .value LIKE '% TEST %'))'이것은 예상됩니다. 정확히 무엇이 잘못 될까요? – clockworkgeek
@clockworkgeek "select"SQL 쿼리를 표시하려면 -> getSelect() 메서드를 사용하고 모든 것이 정상적으로 보입니다. 두 고객이 있습니다 : 이온과 다니엘. 스크립트를 사용할 때 "Daniel"이 아니라 "Ion"고객만을 검색하는 것처럼 동작합니다. "이온"고객에 대한 모든 결과가 표시됩니다. – aki