0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EC CUBE3 並べ替え機能に「お気に入り登録数順」を追加する

Last updated at Posted at 2019-07-10

テーブル mtb_product_list_order_by に項目を追加

「お気に入り登録数」の項目を追加
rankを設定

src/Eccube/Repository/ProductRepository.php

// お気に入り登録数順
		} else if (!empty($searchData['orderby']) && $searchData['orderby']->getId() == 8) {
			$qb->addSelect('COUNT(cfp.id) as HIDDEN favorite'); // カウント(お気に入り登録)を favoriteに代入
            $qb->innerJoin('p.ProductClasses', 'pc');
			$qb->leftJoin('p.CustomerFavoriteProducts', 'cfp');  // leftjoin でテーブルの外部結合 どちらか片方のテーブルにデータがあればレコードが取得される。
            $qb->groupBy('p.id');
            $qb->orderBy('favorite', 'DESC'); // お気に入り登録(降順)
            $qb->addOrderBy('p.id', 'ASC'); // 品番(昇順)

カウント(お気に入り登録)をfavoriteに代入

leftjoin でテーブルの外部結合
どちらか片方のテーブルにデータがあればレコードが取得される。

以上で、商品一覧ページのドロップダウンに「お気に入り数順」が追加され、選択するとお気に入りに追加された数の多い商品順にソートされる。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?