Cách liệt kê tất cả người dùng


9

Là một phần của bài tập, tôi đang cố gắng liệt kê tất cả email của người dùng từ cơ sở dữ liệu của mình trên một trang. Cho đến nay, gần nhất tôi đã có là

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

trả lại

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)

nhưng tôi chỉ muốn email của họ được liệt kê, tôi đã thử các getters và setters ma thuật nhưng noluck (hoặc ít nhất không phải là cách tôi đã sử dụng chúng). Tôi cũng đã thử

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

cũng như một số biến thể khác, bây giờ tôi đã hiểu rằng tôi chỉ đang dán các lệnh một cách ngẫu nhiên với hy vọng chúng hoạt động, điều mà tôi không thích làm.

Làm cách nào để hiển thị email cho tất cả người dùng của tôi? (Tôi hy vọng tôi sẽ không đi quá xa)

Câu trả lời:


19

Bạn thực sự gần như ở đó nhưng điều quan trọng là phải biết những gì đang xảy ra. Nếu bạn sử dụng getCollectionphương pháp bạn thực sự xây dựng một truy vấn. Hãy tiếp tục và thử những điều sau đây

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

cái nào sẽ đưa bạn trở lại

CHỌN e. * TỪ customer_entityNHƯ eỞ ĐÂU ( e. entity_type_id = '1')

Đây là truy vấn mặc định cho một bộ sưu tập của khách hàng. Như bạn có thể nhận thấy mà không chỉ định các trường để truy xuất nó lấy mọi thứ. Vì vậy, hãy thêm một số lĩnh vực!

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

Điều này sẽ in truy vấn sau đây

CHỌN e. * , at_firstname. valueNHƯ firstnameTỪ customer_entityNHƯ eTHAM GIA THAM GIA customer_entity_varcharNHƯ at_firstname( at_firstname. entity_id= e. entity_id) VÀ ( at_firstname. attribute_id= '5') WHERE ( e. entity_type_id= '1') VÀ (at_firstname.value = 'sander') ĐẶT HÀNG B .NG e. emailTĂNG DẦN

Như bạn có thể thấy các bản dựng Magento để truy vấn chính xác cho bạn tùy thuộc vào các thuộc tính bạn thêm vào bộ lọc, chọn, đặt hàng hoặc bất cứ điều gì bạn muốn làm. Kiểm tra trang wiki Bộ sưu tập Magento để biết thêm về các bộ sưu tập vì có rất nhiều tùy chọn bạn có thể sử dụng.

Trong trường hợp của bạn, bạn chỉ cần xác định addAttributeToSelectđể nó chỉ lấy trường đó. Trên các bộ sưu tập không sử dụng EAV addFieldToSelect.

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

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

Cảm ơn mã, $ user-> getData ('email') HOÀN HẢO! Tôi sẽ đọc về điều này
tony09uk

1
Thực hiện một bản cập nhật nhỏ có thể giúp bạn khám phá Magento :)
Sander Mangel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.