Cara daftar semua pengguna

9

Sebagai bagian dari latihan, saya mencoba membuat daftar semua pengguna email dari database saya di satu halaman. Sejauh ini yang paling dekat yang saya miliki adalah

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

kembali

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 '[email protected]' (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 '[email protected]' (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)

tapi saya hanya ingin email mereka dicantumkan. Saya sudah mencoba magic getter dan setters tetapi noluck (atau setidaknya bukan cara ive menggunakannya). Saya juga sudah mencoba

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

dan

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

dan

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

dan

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

serta beberapa variasi lainnya, sekarang saya telah sampai pada titik bahwa saya hanya secara acak menempel perintah dengan harapan mereka bekerja, yang saya tidak suka lakukan.

Bagaimana cara menampilkan email untuk semua pengguna saya? (Saya harap saya tidak jauh dari sasaran)

tony09uk
sumber

Jawaban:

19

Anda sebenarnya hampir sampai di sana tetapi penting untuk mengetahui apa yang terjadi. Jika Anda menggunakan getCollectionmetode ini, Anda sebenarnya sedang membangun sebuah query. Silakan dan coba yang berikut ini

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

yang akan mengembalikan Anda untuk mengikuti

SELECT e. * DARI customer_entitySEBAGAI eMANA ( e. entity_type_id = '1')

Ini adalah permintaan default untuk koleksi pelanggan. Seperti yang mungkin Anda perhatikan tanpa menentukan bidang untuk mengambilnya mengambil semuanya. Jadi mari kita tambahkan beberapa bidang!

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

Ini akan mencetak kueri berikut

SELECT e. * at_firstname,. valueAS firstnameDARI customer_entityAS eINNER JOIN customer_entity_varcharAS at_firstnameON ( at_firstname. entity_id= e. entity_id) DAN ( at_firstname. attribute_id= '5') WHERE ( e. entity_type_id= '1') DAN (at_firstname.value = 'sander') ORDER BY e. emailASC

Seperti yang Anda lihat bangunan Magento untuk mengoreksi kueri untuk Anda tergantung pada atribut yang Anda tambahkan ke filter, pilih, pesan atau apa pun yang ingin Anda lakukan. Lihat halaman wiki Magento Collection untuk informasi lebih lanjut tentang koleksi karena ada BANYAK opsi yang dapat Anda gunakan.

Dalam kasus Anda, Anda hanya perlu menentukan addAttributeToSelectsehingga hanya mengambil bidang itu. Pada koleksi non EAV gunakan addFieldToSelect.

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

foreach ($users as $user)
   var_dump($user->getData());
Sander Mangel
sumber
Terima kasih untuk kodenya, $ user-> getData ('email') PERFECT! Saya akan membaca ini
tony09uk
1
Membuat pembaruan kecil yang dapat membantu Anda dalam eksplorasi Magento :)
Sander Mangel