Як перелічити всіх користувачів


9

У рамках вправи я намагаюся перерахувати на одній сторінці всіх електронних листів з моєї бази даних. Поки що найближче у мене є

$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();

як і кілька інших варіацій, тепер я дійшов до того, що я просто випадковим чином вписую команди в надії, що вони працюватимуть, що мені не подобається робити.

Як відобразити електронну пошту для всіх своїх користувачів? (Я сподіваюся, що я не далеко за межею)

Відповіді:


19

Ви насправді майже там, але важливо знати, що відбувається. Якщо ви використовуєте getCollectionметод, ви фактично будуєте запит. Вперед і спробуйте наступне

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

що поверне вас до наступного

ВИБІР e. * ВІД customer_entityAS 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_entityAS eINNER JOIN customer_entity_varcharAS at_firstnameON ( at_firstname. entity_id= e. entity_id) І ( at_firstname. attribute_id= '5') де ( e. entity_type_id= '1') і (at_firstname.value = 'шліфувальна') ORDER BY e. emailASC

Як ви бачите, що Magento будує, щоб виправити запит для вас залежно від атрибутів, які ви додаєте до фільтру, вибору, замовлення чи того, що ви хочете зробити. Перегляньте вікі- сторінку Magento Collection для отримання додаткових відомостей про колекції, оскільки існує багато варіантів, якими ви можете скористатися.

У вашому випадку вам просто потрібно вказати addAttributeToSelectтак, щоб воно тільки отримувало це поле. Для використання колекцій, що не належать до EAV addFieldToSelect.

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

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

Дякуємо за код, $ user-> getData ("електронна пошта") ДОБРО! Я прочитаю з цього
приводу

1
Зробив невелике оновлення, яке може допомогти вам у дослідженні Magento :)
Sander Mangel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.