From 2212be84a2cffa875b4484feaf510e56e04060d4 Mon Sep 17 00:00:00 2001 From: Stephen Cameron Date: Thu, 8 Aug 2019 10:47:26 +0200 Subject: [PATCH] Performance improvements by eager loading media for products and news. WIP #2731 @1 --- app/Http/Controllers/ProductController.php | 9 +++++++-- app/Templates/Home.php | 7 +++---- app/Templates/News.php | 14 ++++++-------- resources/styles/components/breadcrumbs.styl | 4 ++-- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php index 57fd5ac..0027090 100644 --- a/app/Http/Controllers/ProductController.php +++ b/app/Http/Controllers/ProductController.php @@ -20,7 +20,12 @@ class ProductController extends CubistFrontController $this->data['page'] = $this->data['product_type'] = $productType->getPageData(); $this->data['products'] = []; - $products = Product::where('product_type', $id)->where('online', 1)->get(); + + $products = Product::with('media') // Eager load media to avoid N+1 query problem + ->where('product_type', $id) + ->where('online', 1) + ->get(); + foreach ($products as $item) { $this->data['products'][$item->id] = $item->getPageData(); } @@ -40,7 +45,7 @@ class ProductController extends CubistFrontController $this->data['product'] = $product->getPageData(); $this->data['related'] = []; if (is_array($product->related) && count($product->related) > 0) { - foreach (Product::whereIn('id', $product->related)->limit(4)->get() as $rel) { + foreach (Product::with('media')->whereIn('id', $product->related)->limit(4)->get() as $rel) { $this->data['related'][] = $rel->getPageData(); } } diff --git a/app/Templates/Home.php b/app/Templates/Home.php index ade9ed5..2cf45a8 100644 --- a/app/Templates/Home.php +++ b/app/Templates/Home.php @@ -77,10 +77,9 @@ class Home extends Base $newsItems = []; - $news = News::where([ - ['type', '=', 'news'], - ['status', '=', 1], - ]) + $news = News::with('media') + ->where('type', 'news') + ->where('status', 1) ->orderBy('date', 'desc') ->take(4) ->get(); diff --git a/app/Templates/News.php b/app/Templates/News.php index 53441c0..b90c2dd 100644 --- a/app/Templates/News.php +++ b/app/Templates/News.php @@ -52,10 +52,9 @@ class News extends Base $newsItems = []; - $news = NewsModel::where([ - ['type', '=', 'news'], - ['status', '=', 1], - ]) + $news = NewsModel::with('media') + ->where('type', 'news') + ->where('status', 1) ->orderBy('date', 'desc') ->get(); @@ -72,10 +71,9 @@ class News extends Base $eventItems = []; - $events = NewsModel::where([ - ['type', '=', 'event'], - ['status', '=', 1], - ]) + $events = NewsModel::with('media') + ->where('type', 'event') + ->where('status', 1) ->orderBy('date', 'desc') ->take(2) ->get(); diff --git a/resources/styles/components/breadcrumbs.styl b/resources/styles/components/breadcrumbs.styl index 14fdc30..df28a9b 100644 --- a/resources/styles/components/breadcrumbs.styl +++ b/resources/styles/components/breadcrumbs.styl @@ -1,5 +1,5 @@ .breadcrumbs - @apply flex items-center + @apply flex flex-wrap items-center a @apply text-grey-dark @@ -11,7 +11,7 @@ @apply text-blue &-item - @apply pr-8 relative + @apply pr-8 whitespace-no-wrap relative a &:after -- 2.39.5