Pregunta

Como parte de un ejercicio, estoy tratando de enumerar el correo electrónico de todos los usuarios desde mi base de datos en una página. Hasta ahora lo más cerca que tengo es

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

devoluciones

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)

Pero solo quiero que se enumeren sus correos electrónicos. He probado los Getters y Setters de Magic, pero Noluck (o al menos no la forma en que los usé). Yo también lo he intentado

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

y

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

y

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

y

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

Además de varias otras variaciones, ahora he llegado al punto de que estoy al azar en la esperanza de que funcionen, lo que no me gusta hacer.

¿Cómo muestro el correo electrónico para todos mis usuarios? (Espero no estar muy lejos de la marca)

¿Fue útil?

Solución

En realidad, casi estás allí, pero es importante saber qué está pasando. Si usa el getCollection Método en realidad estás construyendo una consulta. Adelante y prueba lo siguiente

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

que te devolverá a seguir

SELECCIONE e.* DE customer_entity COMO e DÓNDE (e.entity_type_id = '1')

Esta es la consulta predeterminada para una colección de clientes. Como puede notar sin especificar campos para recuperarlo, recupera todo. ¡Así que agregemos algunos campos!

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

Esto imprimirá la siguiente consulta

SELECCIONE e.*, at_firstname.value COMO firstname DE customer_entity COMO e UNIR INTERNAMENTE customer_entity_varchar COMO at_firstname EN (at_firstname.entity_id = e.entity_id) Y (at_firstname.attribute_id = '5') donde (e.entity_type_id = '1') y (at_firstname.value = 'sander') orden por e.email Asc

Como puede ver, Magento Builds para corregir la consulta para usted dependiendo de los atributos que agregue a filtrar, seleccionar, ordenar o lo que desee hacer. Revisar la Wiki de la colección Magento Página para obtener más información sobre colecciones porque hay muchas opciones que puede usar.

En su caso, solo necesita especificar el addAttributeToSelect Entonces solo recupera ese campo. En colecciones no eav use addFieldToSelect.

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

foreach ($users as $user)
   var_dump($user->getData());
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top