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