Cómo enumerar a todos los usuarios
-
16-10-2019 - |
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)
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
.* DEcustomer_entity
COMOe
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
COMOfirstname
DEcustomer_entity
COMOe
UNIR INTERNAMENTEcustomer_entity_varchar
COMOat_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 pore
.
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());