Tüm kullanıcılar nasıl listelenir?


9

Bir alıştırmanın bir parçası olarak, veritabanımdaki tüm kullanıcıların e-postalarını tek bir sayfada listelemeye çalışıyorum. Şimdiye kadar sahip olduğum en yakın şey

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

İadeler

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)

ama sadece e-postalarının listelenmesini istiyorum sihirli alıcıları ve ayarlayıcıları denedim ama noluck (ya da en azından onları kullandığım şekilde değil). Ben de denedim

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

ve

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

ve

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

ve

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

yanı sıra diğer bazı varyasyonlar, şimdi ben sadece yapmak istemiyorum ki, onlar umut çalışmalarına rastgele yapışmasını noktaya var var.

E-postayı tüm kullanıcılarım için nasıl görüntülerim? (Umarım izden çok uzak değilim)

Yanıtlar:


19

Aslında neredeyse oradasınız ama ne olduğunu bilmek önemlidir. getCollectionYöntemi kullanıyorsanız, aslında bir sorgu oluşturuyorsunuz. Devam et ve şunu dene

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

hangi sizi takip etmeye geri dönecek

SEÇ e. * DAN customer_entityAS eWHERE ( e. entity_type_id = '1')

Bu, müşteri koleksiyonu için varsayılan sorgudur. Almak için alanları belirtmeden fark edebileceğiniz gibi her şeyi alır. Şimdi bazı alanlar ekleyelim!

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

Bu, aşağıdaki sorguyu yazdırır

SEÇİN e. * at_firstname,. valueAS firstnameDAN customer_entityAS eiç birleşim customer_entity_varcharAS at_firstnameON ( at_firstname. entity_id= e. entity_id) VE ( at_firstname. attribute_id= '5') ( e. entity_type_id= '1') VE (at_firstname.value = 'zımpara') ORDER BY e. emailASC

Gördüğünüz gibi Magento filtre, seçim, sipariş veya ne yapmak istediğinize bağlı olarak sizin için sorguyu düzeltmek üzere derlenir. Koleksiyonlar hakkında daha fazla bilgi için Magento Koleksiyonu wiki sayfasına göz atın çünkü kullanabileceğiniz bir çok seçenek var.

Sizin durumunuzda, addAttributeToSelectyalnızca bu alanı alabilmesi için belirtmeniz gerekir . EAV olmayan koleksiyonlarda kullanın addFieldToSelect.

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

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

Kod için teşekkürler, $ user-> getData ('email') MÜKEMMEL! Bu konuda okuyacağım
tony09uk

1
Magento'yu keşfetmenize yardımcı olabilecek küçük bir güncelleme yaptık :)
Sander Mangel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.