バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2018/5/16 13:06
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1646
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
居住地: 愛媛県
投稿: 1646
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の機能やデザインのカスタマイズ承ります。

h_tanaka
投稿日時: 2018/9/28 10:19
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1646
Re: カテゴリー数が多いと商品一覧が遅い
上記ソースに問題がありましたので、修正します。

src/Eccube/Form/Type/SearchProductType.php(57行目)
src/Eccube/Form/Type/SearchProductBlockType.php(54行目)
        $Categories = $this->app['eccube.repository.category']
            // ->getList(null, true);
            ->findBy(array());


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

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


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,840名です
総投稿数は109,985件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1291
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.