So listen Sie alle Benutzer auf
-
16-10-2019 - |
Frage
Im Rahmen einer Übung versuche ich, alle Benutzer -E -Mails aus meiner Datenbank auf einer Seite aufzulisten. Soweit ich das nächste habe, ist ich
$user = mage::getModel('customer/customer')->getCollection()->getData();
kehrt zurück
array
0 =>
array
'entity_id' => string '1' (length=1)
'entity_type_id' => string '1' (length=1)
'attribute_set_id' => string '0' (length=1)
'website_id' => string '1' (length=1)
'email' => string 'john.doe@example.com' (length=20)
'group_id' => string '1' (length=1)
'increment_id' => string '000000001' (length=9)
'store_id' => string '1' (length=1)
'created_at' => string '2007-08-30 23:23:13' (length=19)
'updated_at' => string '2008-08-08 12:28:24' (length=19)
'is_active' => string '1' (length=1)
'disable_auto_group_change' => string '0' (length=1)
1 =>
array
'entity_id' => string '2' (length=1)
'entity_type_id' => string '1' (length=1)
'attribute_set_id' => string '0' (length=1)
'website_id' => string '1' (length=1)
'email' => string 'tony09uk@gmail.com' (length=18)
'group_id' => string '1' (length=1)
'increment_id' => null
'store_id' => string '1' (length=1)
'created_at' => string '2013-07-19 14:31:00' (length=19)
'updated_at' => string '2013-07-19 14:31:00' (length=19)
'is_active' => string '1' (length=1)
'disable_auto_group_change' => string '0' (length=1)
Aber ich möchte nur, dass ihre E -Mails aufgeführt werden. Ich habe die Magic Getter und Setter ausprobiert, aber Noluck (oder zumindest nicht so, wie ich sie benutzt habe). Ich habe es auch versucht
$user = mage::getModel('customer/customer')->getCollection()->load();
und
$user = mage::getModel('customer/customer')->getCollection()
->addAttributeToSort('email', 'ASC');
und
$user = mage::getModel('customer/customer')->getCollection()->getEmail()->getData();
und
$user = mage::getModel('customer/customer')->getCollection()->getData();
echo $user->getEmail();
Neben einigen anderen Variationen habe ich jetzt den Punkt, dass ich in der Hoffnung, die sie funktionieren, nur zufällig Befehle festhalten, was ich nicht mag.
Wie zeige ich die E -Mail für alle meine Benutzer an? (Ich hoffe, ich bin nicht weit von der Marke entfernt)
Lösung
Du bist eigentlich fast da, aber es ist wichtig zu wissen, was passiert. Wenn Sie das verwenden getCollection
Methode, die Sie tatsächlich eine Abfrage erstellen. Probieren Sie Folgendes aus
$collection = mage::getModel('customer/customer')->getCollection();
var_dump((string)$collection->getSelect());
Das wird Sie zu Follow zurückkehren
AUSWÄHLEN
e
.* AUScustomer_entity
WIEe
WO (e
.entity_type_id
= '1')
Dies ist die Standardabfrage für eine Kundensammlung. Wie Sie vielleicht bemerken, ohne Felder anzugeben, um abzurufen, ruft es alles ab. Also lasst uns ein paar Felder hinzufügen!
$collection = mage::getModel('customer/customer')->getCollection()
->addAttributeToSelect('email')
->addAttributeToFilter('firstname', 'sander')
->addAttributeToSort('email', 'ASC');
var_dump((string)$collection->getSelect());
Dadurch wird die folgende Abfrage gedruckt
AUSWÄHLEN
e
.*,at_firstname
.value
WIEfirstname
AUScustomer_entity
WIEe
Innerer Joincustomer_entity_varchar
WIEat_firstname
AN (at_firstname
.entity_id
=e
.entity_id
) UND (at_firstname
.attribute_id
= '5') wo ((e
.entity_type_id
= '1') und (at_firstname.Value = 'Sander') bestellen bye
.
Wie Sie sehen können, können Magento -Builds abhängig von den Attributen, die Sie filtern, auswählen, bestellen, oder was auch immer Sie tun möchten. Probier das aus Magento Collection Wiki Seite Weitere Informationen zu Sammlungen, da Sie viele Optionen verwenden können.
In Ihrem Fall müssen Sie nur die angeben addAttributeToSelect
So ruft es nur dieses Feld ab. Bei Nicht -EAV -Sammlungen verwenden Sie addFieldToSelect
.
$users = mage::getModel('customer/customer')->getCollection()
->addAttributeToSelect('email');
foreach ($users as $user)
var_dump($user->getData());