Как перечислить всех пользователей
-
16-10-2019 - |
Вопрос
В рамках упражнения я пытаюсь перечислить все пользователи по электронной почте из моей базы данных на одной странице. Пока ближе всего, что у меня есть
$user = mage::getModel('customer/customer')->getCollection()->getData();
возврат
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)
Но я только хочу, чтобы их электронные письма были перечислены, я попробовал волшебные добычи и сеттеры, но noluck (или, по крайней мере, не то, как я их использовал). Я также попробовал
$user = mage::getModel('customer/customer')->getCollection()->load();
а также
$user = mage::getModel('customer/customer')->getCollection()
->addAttributeToSort('email', 'ASC');
а также
$user = mage::getModel('customer/customer')->getCollection()->getEmail()->getData();
а также
$user = mage::getModel('customer/customer')->getCollection()->getData();
echo $user->getEmail();
Помимо нескольких других вариаций, теперь я дошел до того, что я просто случайно встаю команды в надежде, что они работают, что мне не нравится.
Как отобразить электронное письмо для всех моих пользователей? (Я надеюсь, что я не буду далеко от следа)
Решение
Вы на самом деле почти там, но важно знать, что происходит. Если вы используете getCollection
Метод, который вы на самом деле создаете запрос. Давай и попробуй следующее
$collection = mage::getModel('customer/customer')->getCollection();
var_dump((string)$collection->getSelect());
который вернет вас к следующему
ВЫБРАТЬ
e
.* ИЗcustomer_entity
В КАЧЕСТВЕe
КУДА (e
.entity_type_id
= '1')
Это запрос по умолчанию для коллекции клиентов. Как вы могли бы заметить, не указав поля, чтобы извлечь его для всех. Итак, давайте добавим несколько полей!
$collection = mage::getModel('customer/customer')->getCollection()
->addAttributeToSelect('email')
->addAttributeToFilter('firstname', 'sander')
->addAttributeToSort('email', 'ASC');
var_dump((string)$collection->getSelect());
Это распечатает следующий запрос
ВЫБРАТЬ
e
.*,at_firstname
.value
В КАЧЕСТВЕfirstname
ИЗcustomer_entity
В КАЧЕСТВЕe
ВНУТРЕННЕЕ СОЕДИНЕНИЕcustomer_entity_varchar
В КАЧЕСТВЕat_firstname
НА (at_firstname
.entity_id
=e
.entity_id
) А ТАКЖЕ (at_firstname
.attribute_id
= '5') где (e
.entity_type_id
= '1') и (at_firstname.value = 'sander') порядок поe
.
Как вы можете видеть, Magento сборка для исправления запроса для вас в зависимости от атрибутов, которые вы добавляете в фильтр, выберите, заказывайте или что хотите. Проверьте Magento Collection Wiki Страница для получения дополнительной информации о коллекциях, потому что есть много вариантов, которые вы можете использовать.
В вашем случае вам просто нужно указать addAttributeToSelect
Так что это только извлекает это поле. В коллекциях без EAV addFieldToSelect
.
$users = mage::getModel('customer/customer')->getCollection()
->addAttributeToSelect('email');
foreach ($users as $user)
var_dump($user->getData());