Collectionクラスを用いてCustomerのデータを取得する
この記事は公開から 1年以上が経過しています。現在の最新情報との整合性については弊社では一切の責任を負いかねます。
Magento Advent Calender 2017 13日目の記事です。
magentoのmoduleからcustomersのデータを取得してみようと思います。
またCustomerだけでなくOrder・productのデータ同じように取得することができます。
まずこれらのデータを取得するにはCollectionクラスを使用します。
collectionクラスを用いることによりSQL文を書かずにデータを取得することができます。
Collectionクラスはそれぞれ
- customerデータ「Magento\Customer\Model\ResourceModel\Customer\Collection.php」
- orderデータ「Magento\Sales\Model\ResourceModel\Order\Collection.php」
- productデータ「Magento\Catalog\Model\ResourceModel\Product\Collection.php」
にあります。
データを取得する
<?php
namespace Veriteworks\ExportData\Controller\Index;
class Collection extends \Magento\Framework\App\Action\Action{
public function execute(){
$customerCollection = $this->_objectManager->create('Magento\Customer\Model\ResourceModel\Customer\Collection');
}
}
$customerCollectionにデータ取得できます。
取得するデータをフィルタリングする
特定のデータのみ取得したい場合フィルタリングを行います。
要素の値でフィルタリングを行う場合は AttributeToFillter()を使用します。
メールアドレスが「mail@example.com」のcustomerのみ取得
$customerCollection = $this->_objectManager->create('Magento\Customer\Model\ResourceModel\Customer\Collection')->addAttributeToFilter('email', 'mail@example.com');
商品名に「pen」が含まれているproductのみ取得
$productCollection = $this->_objectManager->create('Magento\Catalog\Model\ResourceModel\Product\Collection')->addAttributeToFilter('name', array('like' => '%pen%'));
順序を並び替える
データを昇順に並べ替えたい場合は setOrder()を使用します。
Entitiy_idで降順に並び替えたい場合
$customerCollection = $this->_objectManager->create('Magento\Customer\Model\ResourceModel\Customer\Collection')->setOrder('entity_id', 'DESC');
updated_atで降順に並び替えたい場合
$customerCollection = $this->_objectManager->create('Magento\Customer\Model\ResourceModel\Customer\Collection')->setOrder('updated_at', 'ASC');
要素を取得する
要素を取得するにはそれぞれのgetterメソッドを使用します。
firstNameを取得する
<?php
namespace Veriteworks\ExportData\Controller\Index;
class Collection extends \Magento\Framework\App\Action\Action{
public function execute(){
$customerCollection = $this->_objectManager->create('Magento\Customer\Model\ResourceModel\Customer\Collection');
foreach ($customerCollection as $customer) {
echo $customer->getFirstname() ."<br />";
}
}
}
CustomerのFirstnameが出力されると思います。
まとめ
Collectionクラスを用いてcustomerデータを取得することができました。
SQL文を書かずにとても簡単です。
カテゴリ
- お知らせ (34)
- Magento Open Source (169)
- Adobe Commerce (86)
- Magentoトピックス (349)
- Magentoバージョンアップ (11)
- OroCommerce (1)
- AkeneoPIM (16)
- Shopware (26)
- 世界のプライバシー保護規制 (11)
- OroCRM (14)
- Typo3 (9)
- イベント (27)
- Mage-OS (1)
- エクステンションリリース情報 (75)
- Mautic (1)
最近の投稿
アーカイブ