วิธีแสดงรายการผู้ใช้ทั้งหมด


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

ซึ่งจะทำให้คุณกลับไปติดตาม

SELECT e. * FROM customer_entityAS eWHERE ( e. entity_type_id = '1')

นี่เป็นคิวรีเริ่มต้นสำหรับการรวบรวมลูกค้า ในขณะที่คุณอาจสังเกตเห็นโดยไม่ต้องระบุเขตข้อมูลเพื่อดึงมันดึงทุกอย่าง ลองเพิ่มบางช่อง!

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

จะพิมพ์แบบสอบถามต่อไปนี้

SELECT e. at_firstname* valueAS firstnameจาก customer_entityAS eINNER JOIN customer_entity_varcharAS at_firstnameON ( at_firstname. entity_id= e. entity_id) และ ( at_firstname. attribute_id= '5') WHERE ( e. entity_type_id= '1') และ (at_firstname.value = 'ขัด') ORDER eBY emailASC

ในขณะที่คุณสามารถเห็น Magento สร้างเพื่อแก้ไขแบบสอบถามสำหรับคุณขึ้นอยู่กับคุณลักษณะที่คุณเพิ่มในตัวกรองเลือกลำดับหรือสิ่งที่คุณต้องการทำ ตรวจสอบหน้าวิกิพีเดีย Magento Collectionสำหรับข้อมูลเพิ่มเติมเกี่ยวกับคอลเลกชันเนื่องจากมีตัวเลือกมากมายที่คุณสามารถใช้ได้

ในกรณีของคุณคุณเพียงแค่ต้องระบุaddAttributeToSelectเพื่อที่จะดึงเฉพาะเขตข้อมูลนั้น addFieldToSelectที่ไม่ใช้งานคอลเลกชัน EAV

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

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

ขอบคุณสำหรับรหัส $ user-> getData ('อีเมล') ที่สมบูรณ์แบบ! ฉันจะอ่านบนนี้
tony09uk

1
ทำการอัพเดทเล็กน้อยซึ่งอาจช่วยคุณในการสำรวจ Magento :)
Sander Mangel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.