Question

Dans le cadre d'un exercice que je suis en train de lister tous les utilisateurs e-mail de ma base de données sur une page. Jusqu'à présent, le plus proche que j'ai est

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

retourne

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)

mais je veux que leurs e-mails à la liste que j'ai essayé la magie accesseurs mais noluck (ou du moins pas la façon dont les ive utilisés). J'ai aussi essayé

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

et

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

et

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

et

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

ainsi que plusieurs autres variantes, maintenant je suis arrivé au point que je suis en train de commandes au hasard en tiens dans le l'espoir qu'ils travaillent, que je ne aime pas faire.

Comment puis-je afficher l'e-mail pour tous les utilisateurs? (J'espère que je ne suis pas trop loin de la marque)

Était-ce utile?

La solution

Vous êtes en fait presque là, mais il est important de savoir ce qui se passe. Si vous en utilisant la méthode de getCollection vous construisez en fait une requête. Allez-y et essayez ce qui suit

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

qui vous ramènera à suivre

SELECT e. * FROM customer_entity AS e OU (e.entity_type_id = '1')

Ceci est la requête par défaut pour une collection de clients. Comme vous le remarquerez sans spécifier les champs pour récupérer il récupère tout. permet donc d'ajouter des champs!

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

imprimera la requête suivante

SELECT e. *, at_firstname.value AS firstname DE customer_entity AS e INNER JOIN AS customer_entity_varchar at_firstname ON (at_firstname.entity_id = e.entity_id) ET (at_firstname.attribute_id = '5') où (= e.entity_type_id '1') et (at_firstname.value = 'ponceuse') ORDER BY e.email ASC

Comme vous pouvez le voir Magento construit à la requête correcte pour vous selon les attributs que vous ajoutez à filtrer, sélectionner, commander ou tout ce que vous voulez faire. Consultez la Collection Magento wiki pour plus sur les collections, car il y a beaucoup d'options que vous pouvez utiliser.

Dans votre cas, il vous suffit de spécifier le addAttributeToSelect il ne récupère que ce champ. Sur les collections non EAV utilisent addFieldToSelect.

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

foreach ($users as $user)
   var_dump($user->getData());
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top