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.

Était-ce utile?

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');
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top