如何在 Magento 2 中编程方式获取客户集合
客户收集是为商店管理员提供了各种好处。但最显着的优点是它允许您按属性过滤商店的所有客户。因此,在本教程中,我将指导您如何在 Magento 2 中编程方式获取客户集合。
如何通过两步获取客户集合:
- 第 1 步:获取客户对象
- 第 2 步:获取客户详细信息
步骤1:获取客户对象
Magento 提供了各种方法来帮助您获取对象,例如从工厂、存储库、通过对象管理器获取或直接注入它。您可以使用任何您喜欢的方法,但是在使用对象管理器之前您应该仔细考虑,虽然它很简单,但它不是最好的方法。
下面是可用于注入客户工厂和客户对象的行代码。
class MyClass
{
protected $_customer;
protected $_customerFactory;
public function __construct(...
\Magento\Customer\Model\CustomerFactory $customerFactory,
\Magento\Customer\Model\Customer $customers
)
{
...
$this->_customerFactory = $customerFactory;
$this->_customer = $customers;
}
public function getCustomerCollection() {
return $this->_customer->getCollection()
->addAttributeToSelect("*")
->load();
}
public function getFilteredCustomerCollection() {
return $this->_customerFactory->create()->getCollection()
->addAttributeToSelect("*")
->addAttributeToFilter("firstname", array("eq" => "Max"))
-load();
}
}
尽管同时注入客户对象和客户工厂可能毫无意义,但这将是一个很好的演示,供您在注入其他对象时参考。
使用第一种方法getCustomerCollection()
,返回所有客户的加载集合,包括所有属性。但是,如果由于内存限制而具有太多属性,则使用此方法并不是一个好主意。
要从给定的客户工厂获取对象,getFilteredCustomerCollection()
请应用第二种方法。使用这种方法,您只需要添加create()
,您还可以添加过滤器来过滤您的集合。此时,您将收到所有具有名字的客户的集合,例如 Max。
第 2 步:获取客户详细信息
为了获取客户的详细信息,您将需要他们的 ID,因为客户集合需要按客户 ID 加载。
为了更容易理解,假设客户 ID 为 10。您将通过运行以下命令获取客户详细信息:
$customerID = 10;
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customerObj = $objectManager->create('Magento\Customer\Model\Customer')
->load($customerID);
$customerEmail = $customerObj->getEmail();
版权声明:本站内容源自互联网,如有内容侵犯了你的权益,请联系删除相关内容。