Fix N+1 query problem in product detail page #6547
Open
+52
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
概要
商品詳細ページで発生していたN+1クエリ問題を解決しました。
問題
findWithSortedClassCategories()がProductStockとTaxRuleをEager LoadingしていなかったProduct::_calc()が各ProductClassに対してlazy loadをトリガーし、N+1クエリが発生解決策
eccube_result_cache_lifetime_shortによる結果キャッシュを有効化期待される効果
変更内容
1. ProductRepository::findWithSortedClassCategories()
2. ProductRepositoryTest::testFindWithSortedClassCategoriesWithManyProductClasses()
_calc()実行前後のクエリ数をカウントセキュリティレビュー結果
✅ セキュリティチェック: 合格
詳細なセキュリティレポートはコメントを参照してください。
テスト
参考
EC-CUBE 4.3既存実装(findProductsWithSortedClassCategories)のパターンを商品詳細にも適用
🤖 Generated with Claude Code