Frage

Ich kann eine Adresse mit dem folgenden Code laden:

$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();

Das Problem ist das street ist ein Array, wenn es im Adressobjekt zurückgegeben wird. Wie kann ich also hinzufügen? street in meine Filter oben?

Ich weiß, ich könnte alle Adressen laden und sie im Code durchlaufen und das Array mit meinen Daten vergleichen, aber ich möchte diesen Schritt vermeiden, wenn möglich, dass es einen zusätzlichen Aufwand ist.

War es hilfreich?

Lösung

Das sollte funktionieren:

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

oder das, wenn Sie wollen like Filter

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

Selbst wenn die Straße als Array zurückgegeben wird, wird in der Datenbank als einzelnes Feld aufbewahrt. Die Werte im Array werden durch verkettet durch \n.
Wenn Sie nach einer genauen Adresse suchen, die in 2 Zeilen liegt, sollte dies dies tun:

->addAttributeToFilter('street', 'somewhere\nelse');
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top