2014-09-19 4 views
2

Я пытаюсь создать скрипт поиска для извлечения записей из коллекции клиентов. Фокус в том, что нормальное условие «ИЛИ» работает только для первой записи.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') ИЛИ (e.email LIKE '% TEST%') ИЛИ (at_phone .value LIKE '% TEST%')) ', который ожидается. Что именно происходит неправильно? – clockworkgeek

+0

@clockworkgeek Я использовал метод -> getSelect(), чтобы показать запрос «Выбрать» sql, и все выглядит нормально. У меня 2 клиента: Ион и Даниэль. Когда я использую скрипт, он ведет себя так, как будто он ищет только в «Ионном» клиенте, а не «Даниил». Все результаты показаны для клиента «Ион». – aki

ответ

0

На этот раз моя глупость превосходит меня. Я использовал еще один атрибут в моем запросе о том, что Magento имел некоторые проблемы при его фильтрации, настраиваемый атрибут, созданный с помощью модуля. Спасибо @clockworkgeek за поддержку.

Смежные вопросы