Как загрузить адрес по атрибуту Street
-
16-10-2019 - |
Вопрос
Я могу загрузить адрес, используя следующий код:
$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');
Не связан с magento.stackexchange