バージョン選択

フォーラム

メニュー

オンライン状況

22 人のユーザが現在オンラインです。 (17 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 22
もっと...

PR

先着1,000社 プラグインダウンロード&お申込で1,000円分Amazonギフト券プレゼント amazon pay
広告掲載について

サイト内検索

質問 > フロント機能 > カテゴリー数が多いと商品一覧が遅い

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2018/5/16 13:06
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 473
Re: カテゴリー数が多いと商品一覧が遅い
もう一箇所ありました。
こちらもクエリが1000回近く発行されてしまうため、改善する必要があるのですが、どうすればよいでしょうか?

src/Eccube/Repository/CategoryRepository.php
    public function getList(Category $Parent = null, $flat = false)
    {
        $options = $this->app['config']['doctrine_cache'];
        $lifetime = $options['result_cache']['lifetime'];

        $qb = $this->createQueryBuilder('c1')
            ->select('c1, c2, c3, c4, c5')
            ->leftJoin('c1.Children', 'c2')
            ->leftJoin('c2.Children', 'c3')
            ->leftJoin('c3.Children', 'c4')
            ->leftJoin('c4.Children', 'c5')
            ->orderBy('c1.rank', 'DESC')
            ->addOrderBy('c2.rank', 'DESC')
            ->addOrderBy('c3.rank', 'DESC')
            ->addOrderBy('c4.rank', 'DESC')
            ->addOrderBy('c5.rank', 'DESC');

        if ($Parent) {
            $qb->where('c1.Parent = :Parent')->setParameter('Parent', $Parent);
        } else {
            $qb->where('c1.Parent IS NULL');
        }
        $Categories = $qb->getQuery()
            ->useResultCache(true, $lifetime)
            ->getResult();

        if ($flat) {
            $array = array();
            foreach ($Categories as $Category) {
                $array = array_merge($array, $Category->getSelfAndDescendants());    // ★ ここを改善したい
            }
            $Categories = $array;
        }

        return $Categories;
    }


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

h_tanaka
投稿日時: 2018/5/18 14:15
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 473
Re: カテゴリー数が多いと商品一覧が遅い
自己解決しました。

呼び元側で対応することができました。

src/Eccube/Form/Type/SearchProductType.php(57行目)
src/Eccube/Form/Type/SearchProductBlockType.php(54行目)
        $Categories = array();
        $AllCategories = $this->app['eccube.repository.category']
            // ->getList(null, true);
            ->getList();
        foreach ($AllCategories as $Category) {
            $Parent = $Category->getParent();
            if (!$Parent) {
                $Categories[] = $Category;
                continue;
            }
            $Parent = $Parent->getParent();
            if (!$Parent) {
                $Categories[] = $Category;
                continue;
            }
        }


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

統計情報

総メンバー数は25,949名です
総投稿数は85,832件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1725
4
yuh
1490
5
red
1154
6
468
953
7
umebius
943
8
fukap
907
9
shutta
827
10
tsuji
815
11 ramrun 789
12
tao_s
651
13 karin 642
14 sumida 641
15
homan
633
16 DELIGHT 571
17
patapata
502
18
flealog
483
19
h_tanaka
473
20 tonton 436


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© LOCKON CO.,LTD. All Rights Reserved.