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)

War es hilfreich?

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.* AUS customer_entity WIE e 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 WIE firstname AUS customer_entity WIE e Innerer Join customer_entity_varchar WIE at_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 by e.email ASC

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());
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top