Magento 2: Получайте заказы по способу оплаты
Я использую приведенный ниже код в своем блоке для получения всех заказов,
public function getOrders()
{
if (!($customerId = ObjectManager::getInstance()
->create('Magento\Customer\Model\SessionFactory')->create()
->getCustomer()->getId())) {
return false;
}
if (!$this->orders) {
$this->orders = $this->getOrderCollectionFactory()->create($customerId)->addFieldToSelect(
'*'
)->addFieldToFilter(
'status',
['in' => $this->_orderConfig->getVisibleOnFrontStatuses()]
)->setOrder(
'created_at',
'desc'
);
}
return $this->orders;
}
Как я могу добавить к нему фильтр, чтобы получать все заказы по способу оплаты?
Я пробовал использовать
addFieldToFilter ("метод", "ccsave");
Но, похоже, это не работает.
3
1 answers
Вы не можете напрямую фильтровать сбор заказов по способу оплаты.
Для достижения этого вам следует выполнить соединение mysql в таблице базы данных sales_order_payment
с вашей коллекцией заказов.
if (!$this->orders) {
$pMethod = 'ccsave';
$this->orders = $this->getOrderCollectionFactory()->create($customerId)->addFieldToSelect(
'*'
)->addFieldToFilter(
'status',
['in' => $this->_orderConfig->getVisibleOnFrontStatuses()]
);
/* join with payment table */
$this->orders->getSelect()
->join(
["sop" => "sales_order_payment"],
'main_table.entity_id = sop.parent_id',
array('method')
)
->where('sop.method = ?',$pMethod );
$this->orders->setOrder(
'created_at',
'desc'
);
}
4
Author: Amit Bera, 2017-11-29 09:16:58