[EC-CUBE4系]受注一覧を注文日で並び替えする

2023年2月3日

動作イメージ

 

環境

この記事は、以下の管理人の検証環境にて記事にしています。

EC-CUBE 4.1.2-p1

 

リポジトリの作成

app\Customize\Repository に CustomizeOrderRepository.php という名前で ファイルを設置する。

src\Eccube\Repository\OrderRepository\OrderRepository.phpから定数COLUMNSgetQueryBuilderBySearchDataForAdmin を丸ごとコピーして CustomizeOrderRepository.php に記述する。
定数COLUMNSorder_date をキーとして o.order_date を値に設定する。

記述イメージは下記になる。

namespace Customize\Repository;

use Eccube\Entity\Master\OrderStatus;
use Eccube\Entity\Shipping;
use Eccube\Repository\QueryKey;
use Eccube\Util\StringUtil;

use Eccube\Repository\OrderRepository AS BaseOrderRepository;

class CustomizeOrderRepository extends BaseOrderRepository
{
  public const COLUMNS = [
    'order' => 'o.name01'
    ,'orderer'=> 'o.id'
    ,'shipping_id'=> 's.id'
    ,'purchase_product' => 'oi.product_name'
    ,'quantity' => 'oi.quantity'
    ,'payment_method' => 'o.payment_method'
    ,'order_status' => 'o.OrderStatus'
    ,'purchase_price' => 'o.total'
    ,'shipping_status' => 's.shipping_date'
    ,'tracking_number' => 's.tracking_number'
    ,'delivery' => 's.name01'

    ,'order_date' => 'o.order_date'// 追記
  ];

  public function getQueryBuilderBySearchDataForAdmin($searchData)
  {
    ~~省略~~~~

    return $this->queries->customize(QueryKey::ORDER_SEARCH_ADMIN, $qb, $searchData);
  }
}

 

コントローラーの作成

src\Eccube\Controller\AdminOrder
OrderController.phpをコピーして
app\Customize\Controller\Admin\Order
に設置します。

コピーした OrderController.php namespace を忘れずに

namespace Eccube\Controller\Admin\Order;

namespace Customize\Controller\Admin\Order;
へ変更する。

後は下記のようにファイルの追記などを行う

namespace Customize\Controller\Admin\Order;//変更
~~省略~~~~
use Customize\Repository\CustomizeOrderRepository;//追記

class OrderController extends AbstractController
{
  ~~省略~~~~
  protected $CustomizeOrderRepository;//追記
  ~~省略~~~~

  public function __construct(
    ~~省略~~~~
    MailService $mailService,
    CustomizeOrderRepository $CustomizeOrderRepository//追記
  ) {
    ~~省略~~~~
    $this->mailService = $mailService;
    $this->CustomizeOrderRepository = $CustomizeOrderRepository;//追記
  }

  ~~省略~~~~
  public function index(Request $request, $page_no = null, PaginatorInterface $paginator)
  {
    ~~省略~~~~
    // $qb = $this->orderRepository->getQueryBuilderBySearchDataForAdmin($searchData);//コメントアウト
    $qb = $this->CustomizeOrderRepository->getQueryBuilderBySearchDataForAdmin($searchData);//追記
    ~~省略~~~~
  }

 

Twigの作成

src/Eccube/Resource/template/admin/Order/
からindex.twigをコピーして
app/template/admin/Order/
に設置する。

index.twig の #search_result の thead > tr の中に <th> を追加する。

tbody > tr の中に <td>を追加し、{{ Order.Order_date|date_min }} を記載する。

<table class="table table-sm" id="search_result">
  <thead>
    <tr>
    ~~省略~~~~
      <th class="border-top-0 pt-2 pb-2 text-center text-nowrap">{{ '注文日'|trans }}<a href="#" class="js-listSort" data-sortkey="order_date"><i class="fa fa-arrow-up" aria-hidden="true"></i></a></th>
    ~~省略~~~~
    </tr>
  </thead>
  <tbody>
    ~~省略~~~~
    <td class="align-middle text-right">{{ Order.Order_date|date_min }}</td>
    ~~省略~~~~

 

最後に

これで注文日での並び替えができるはずです。

省略ばかりで分かりにくいかもしれませんが、頑張ってください。
今日はこの辺でー

  • この記事を書いた人

カバノキ

印刷会社のWEB部隊に所属してます。 WEB制作に携わってから、もう時期10年になります。 普段の業務では、PHPをメインにサーバーサイドの言語を扱っています。 最近のお気に入りはJavascriptです。 Vue.jsを狂喜乱舞しながら、社内に布教中です。

-EC-CUBE
-,