Вопрос

Я могу загрузить адрес, используя следующий код:

$addresses = $addressObj->getCollection()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('firstname', $addressData['firstname'])
        ->addAttributeToFilter('lastname', $addressData['lastname'])
        ->addAttributeToFilter('city', $addressData['city'])
        ->addAttributeToFilter('postcode', $addressData['postcode'])
        ->addAttributeToFilter('telephone', $addressData['telephone'])
        ->load();

Проблема в том, что street это массив при возвращении в объект адреса, так как я могу добавить street в мои фильтры выше?

Я знаю, что мог бы загрузить все адреса и пройти через них в коде, а затем сравнить массив с моими данными, но я хотел бы избежать этого шага, если это возможно, это дополнительные накладные расходы.

Это было полезно?

Решение

Это должно работать:

->addAttributeToFilter('street', 'somewhere');

или это, если хотите like фильтр

->addAttributeToFilter('street', array('like'=>'%somewhere%'));

Даже если улица возвращается как массив, в базе данных сохраняется как одно поле. Значения в массиве объединяются \n.
Если вы ищете точный адрес, который находится на 2 строках, это должно это сделать:

->addAttributeToFilter('street', 'somewhere\nelse');
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top