Come elencare tutti gli utenti


9

Come parte di un esercizio sto cercando di elencare tutte le e-mail degli utenti dal mio database su una pagina. Finora il più vicino che ho è

$user = mage::getModel('customer/customer')->getCollection()->getData();

ritorna

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)

ma voglio solo che le loro e-mail siano elencate, ho provato i getter magici e i setter ma noluck (o almeno non il modo in cui li ho usati). Ho anche provato

    $user = mage::getModel('customer/customer')->getCollection()->load();

e

    $user = mage::getModel('customer/customer')->getCollection()
                                               ->addAttributeToSort('email', 'ASC');

e

$user = mage::getModel('customer/customer')->getCollection()->getEmail()->getData();

e

$user = mage::getModel('customer/customer')->getCollection()->getData();
echo $user->getEmail();

così come molte altre varianti, ora sono arrivato al punto che sto semplicemente attaccando casualmente i comandi nella speranza che funzionino, cosa che non mi piace fare.

Come visualizzo l'e-mail per tutti i miei utenti? (Spero di non essere lontano dal segno)

Risposte:


19

In realtà ci sei quasi ma è importante sapere cosa sta succedendo. Se si utilizza il getCollectionmetodo, si sta effettivamente creando una query. Vai avanti e prova quanto segue

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

che ti farà tornare a seguire

SELEZIONA e. * DA customer_entityCOME eDOVE ( e. entity_type_id = '1')

Questa è la query predefinita per una raccolta clienti. Come potresti notare senza specificare i campi da recuperare, recupera tutto. Quindi aggiungiamo alcuni campi!

$collection = mage::getModel('customer/customer')->getCollection()
   ->addAttributeToSelect('email')
   ->addAttributeToFilter('firstname', 'sander')
   ->addAttributeToSort('email', 'ASC');
var_dump((string)$collection->getSelect());

Questo stamperà la seguente query

SELEZIONE e. *, at_firstname. valueCOME firstnameDA customer_entityAS eINNER JOIN customer_entity_varcharCOME at_firstnameON ( at_firstname. entity_id= e. entity_id) E ( at_firstname. attribute_id= '5') WHERE ( e. entity_type_id= '1') e (at_firstname.value = 'Sander') ORDER BY e. emailASC

Come puoi vedere le build di Magento per correggere la query per te in base agli attributi che aggiungi al filtro, seleziona, ordina o qualunque cosa tu voglia fare. Dai un'occhiata alla pagina wiki della Collezione Magento per ulteriori informazioni sulle collezioni perché ci sono MOLTE opzioni che puoi usare.

Nel tuo caso devi solo specificare in addAttributeToSelectmodo che recuperi solo quel campo. Nelle raccolte non EAV utilizzare addFieldToSelect.

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

foreach ($users as $user)
   var_dump($user->getData());

Grazie per il codice, $ user-> getData ('email') PERFETTO!
Leggerò

1
Ho fatto un piccolo aggiornamento che potrebbe aiutarti nella tua esplorazione di Magento :)
Sander Mangel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.