Comment charger une adresse par attribut de rue
-
16-10-2019 - |
Question
Je peux charger une adresse en utilisant le code suivant:
$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();
Le problème est que street
est un tableau lors du retour dans l'objet adresse alors comment puis-je ajouter street
dans mes filtres ci-dessus?
Je sais que je pourrais charger toutes les adresses et boucle à travers eux dans le code, puis comparer le tableau avec mes données mais je voudrais éviter cette étape si possible, il est une charge supplémentaire.
La solution
Cela devrait fonctionner:
->addAttributeToFilter('street', 'somewhere');
ou cela, si vous voulez que le filtre like
->addAttributeToFilter('street', array('like'=>'%somewhere%'));
Même si la rue est retourné comme un tableau, dans la base de données est conservé comme un seul champ. Les valeurs du tableau sont concaténés par \n
.
Si vous recherchez une adresse exacte qui est sur 2 lignes ce qui devrait le faire:
->addAttributeToFilter('street', 'somewhere\nelse');