2016-07-05 13 views
2

私はmagento2で初心者です。すべての注文関連を取得しようとします 情報とその情報は、管理者側に表示するだけです 注文ID、注文ステータス、店舗名注文日、 お支払い方法など 注文ID、注文ステータスなどの注文情報を取得しようとしますが、 ページはホームページ/ダッシュボードにリダイレクトされます。Magentoで注文コレクションオブジェクトを取得する方法2

商品のコレクションオブジェクトを使用して商品関連情報を取得しましたが、すべての注文情報をどのように取得するのですか。

私は、注文コレクション オブジェクトまたは注文リポジトリオブジェクトを使用して注文情報を取得する方法を知りません。その注文情報はmagento2の管理者側の に表示されます。ここで

が私の見解やinfo.phtmlファイルがされている。

<?php  $_order = $block->getOrder(3); 
$orderAdminDate = $block->formatDate(
$block->getOrderAdminDate($_order->getCreatedAt()), 
\IntlDateFormatter::MEDIUM, true); 
echo 'Order Status = '.$_order->getStatusLabel(); 
echo 'Order Id = '. $_order->getRealOrderId(); ?> 

そして、ここでは私のInfo.phpブロックファイルです:

class Info extends \Magento\Sales\Block\Adminhtml\Order\AbstractOrder 
{ 
public function __construct(
\Magento\Backend\Block\Template\Context $context, 
\Magento\Sales\Model\Order\Address\Renderer $addressRenderer, 
array $data = [] 
) { $this->addressRenderer = $addressRenderer; 
parent::__construct($context, $adminHelper, $data); 
} 
public function getOrder() 
{ return $this->_coreRegistry->registry('current_order'); } } 

答えて

2

In your Block file

namespace "Your Module namespace"; 
class modelclass extends \Magento\Framework\View\Element\Template { 
    /** @var \Magento\Sales\Model\ResourceModel\Order\CollectionFactory */ 
    protected $_orderCollectionFactory; 
    /** @var \Magento\Sales\Model\ResourceModel\Order\Collection */ 
    protected $orders; 
    public function __construct(
\Magento\Framework\View\Element\Template\Context $context, \Magento\Sales\Model\ResourceModel\Order\CollectionFactory $orderCollectionFactory, array $data = [] 
) { 
    $this->_orderCollectionFactory = $orderCollectionFactory;  
    parent::__construct($context, $data);   
} 

public function getOrders() {   
     if (!$this->orders) 
     { 
      $this->orders = $this->_orderCollectionFactory->create()->addFieldToSelect('*'); 
     } 
     return $this->orders; 
} 

In your phtml file

$_orders = $block->getOrders(); 
if ($_orders && count($_orders)) { 
$complete = $pending = $closed = $canceled = $processing = $onHold = 0; 
foreach ($_orders as $_order) { 
$label = $_order->getStatusLabel(); 
switch ($label) { 
     case 'Complete' : $complete++; 
      break; 
     case 'Pending' : $pending++; 
      break; 
     case 'Processing' : $processing++; 
      break; 
     case 'Canceled' : $canceled++; 
      break; 
     case 'Closed' : $closed++; 
      break; 
    } 
} 
    echo "Order Status <br>"; 
    echo "Completed Order " . $complete . "<br>"; 
    echo "Pending Order " . $pending . "<br>"; 
    echo "Closed Order " . $closed . "<br>"; 
    echo "Canceled Order " . $canceled . "<br>"; 
    echo "Processing Order" . $processing . "<br>"; 
} 
else{ 
echo "You have no Orders"; 
} 
+0

これはM2.2では動作しなくなりました。 "Uncaught Error:nullでメンバー関数create()を呼び出す"というエラーが表示される –

4

あなたはコードの下に通過することができます

<?php 
namespace 'moduleNameSpace'; 
class ModelClass extends \Magento\Framework\View\Element\Template 
{ 

protected $_orderCollectionFactory; 

public function __construct(
    \Magento\Framework\View\Element\Template\Context $context, 
    \Magento\Sales\Model\ResourceModel\Order\CollectionFactory $orderCollectionFactory, 
    array $data = [] 
) { 
    $this->_orderCollectionFactory = $orderCollectionFactory; 

    parent::__construct($context, $data); 
    $this->_isScopePrivate = true; 
} 

protected function _construct() 
{ 
    parent::_construct(); 
    $this->_orderCollectionFactory->create()->addAttributeToSelect('*') 

} 
    public function getSalesOrderCollection(array $filters = []){ 

    return $this->orderCollectionFactory; 
}  
} 
+0

あなたの答えをいただき、ありがとうございます。それは仕事ですが、私はそれ以前の解決策を見つけました。それは以下です –

+0

getSalesOrderCollection-functionにforeachがありません。 –

2

GETあなたのすべての注文情報

public function __construct(
    \Psr\Log\LoggerInterface $_logger, 
    \Magento\Sales\Model\Order $_orderModel 

    ) { 
    $this->_logger = $_logger; 
    $this->_orderModel = $_orderModel; 

    } 
    public function getOrders($store){ 
    $orders = $this->_orderModel->getCollection(); 
    $orders->join(array('item' => 'sales_order_item'), 'main_table.entity_id = item.order_id AND main_table.store_id='.$store.' '); 
    $orders->getSelect()->group('main_table.entity_id'); 
    $orders->getSelect()->order('main_table.created_at DESC'); 
    $this->_logger->info($orders); //find your query in system.log 
    $order_array = array(); 
     foreach($orders as $k=>$order) { 
        $order_array[$k] = array(
         'order_id' => $order->getId(), 
         'order_incremental_id' => $order->getIncrementId(), 
         'order_status' => $order->getStatusLabel(), 
         'order_date' => $order->getCreatedAt(), 
         'customer_name' => $order->getCustomerName() 
         //as your need 
        ); 
     } 
    return json_encode($order_array); 
} 
+0

こんにちは、** @タップ**あなたの返信のThnksが、私のために働いていません。エラーを返します。 –

0
<?php 
namespace namespace\modulename\Model\Config\Source; 
use Magento\Sales\Model\ResourceModel\Order\Status\CollectionFactory; 
class OrderStatus implements \Magento\Framework\Option\ArrayInterface 
{ 
    protected $options = null; 
    protected $collectionFactory; 

    public function __construct(
      CollectionFactory $collectionFactory 
    ) { 
     $this->collectionFactory = $collectionFactory; 
    } 
    public function toOptionArray() 
    { 
     if ($this->options === null) { 
      $status = $this->collectionFactory->create(); 
      foreach ($status as $stat) { 
       $this->options[] = [ 
        'value' => $stat->getStatus(), 
        'label' => $stat->getLabel(), 
       ]; 
      } 
     } 
     return $this->options; 
    } 
} 
+0

このコードを使用してモジュールの受注伝票を読み込むと、結果はmagento2のstore-> configに表示されます – chris

0
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
$orderDatamodel = $objectManager->get('Magento\Sales\Model\Order')->getCollection(); 
foreach($orderDatamodel as $orderDatamodel1){ 
print_r($orderDatamodel1->getData()); 

} 
+1

いくつかの説明とコードスニペットだけでなく、他の人が理解することができます。 – AaoIi

関連する問題