So listen Sie alle Benutzer auf

9

Im Rahmen einer Übung versuche ich, alle Benutzer-E-Mails aus meiner Datenbank auf einer Seite aufzulisten. Bisher ist das nächste, was ich habe

$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 '[email protected]' (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 '[email protected]' (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 aufgelistet werden. Ich habe die magischen Getter und Setter ausprobiert, aber nicht Glück (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 erreicht, dass ich nur zufällig Befehle in die Hoffnung stecke, dass sie funktionieren, was ich nicht gerne mache.

Wie zeige ich die E-Mail für alle meine Benutzer an? (Ich hoffe, ich bin nicht zu weit vom Ziel entfernt)

tony09uk
quelle

Antworten:

19

Sie sind eigentlich fast da, aber es ist wichtig zu wissen, was passiert. Wenn Sie die getCollectionMethode verwenden, erstellen Sie tatsächlich eine Abfrage. Gehen Sie vor und versuchen Sie Folgendes

$collection = mage::getModel('customer/customer')->getCollection();
var_dump((string)$collection->getSelect());

das wird Sie zu folgenden zurückkehren

SELECT e. * FROM customer_entityAS eWHERE ( e. entity_type_id = '1')

Dies ist die Standardabfrage für eine Kundensammlung. Wie Sie vielleicht bemerken, werden ohne Angabe von Feldern zum Abrufen alles abgerufen. Fügen wir also einige Felder hinzu!

$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

SELECT e. * , at_firstname. valueAS firstnameFROM customer_entityAS eINNER JOIN customer_entity_varcharAS at_firstnameON ( at_firstname. entity_id= e. entity_id) AND ( at_firstname. attribute_id= '5') WHERE ( e. entity_type_id= '1') AND (at_firstname.value = 'sander') ORDER BY e. emailASC

Wie Sie sehen können, erstellt Magento Builds, um die Abfrage für Sie zu korrigieren, abhängig von den Attributen, die Sie zum Filtern, Auswählen, Bestellen oder was auch immer Sie tun möchten hinzufügen. Weitere Informationen zu Sammlungen finden Sie auf der Magiki-Sammlung-Wiki- Seite, da Sie eine Vielzahl von Optionen verwenden können.

In Ihrem Fall müssen Sie nur das angeben addAttributeToSelect, damit nur dieses Feld abgerufen wird. Bei Nicht-EAV-Sammlungen verwenden addFieldToSelect.

$users = mage::getModel('customer/customer')->getCollection()
           ->addAttributeToSelect('email');

foreach ($users as $user)
   var_dump($user->getData());
Sander Mangel
quelle
Danke für den Code, $ user-> getData ('email') PERFECT! Ich werde dies nachlesen
tony09uk
1
Habe ein kleines Update gemacht, das dir bei deiner Erkundung von Magento helfen könnte :)
Sander Mangel