]> _ Git - pmi.git/commitdiff
Performance improvements by eager loading media for products and news. WIP #2731 @1
authorStephen Cameron <stephen@cubedesigners.com>
Thu, 8 Aug 2019 08:47:26 +0000 (10:47 +0200)
committerStephen Cameron <stephen@cubedesigners.com>
Thu, 8 Aug 2019 08:47:26 +0000 (10:47 +0200)
app/Http/Controllers/ProductController.php
app/Templates/Home.php
app/Templates/News.php
resources/styles/components/breadcrumbs.styl

index 57fd5ac13562c539e524d1c1b0c6262fed356e86..00270900c3b462d42e2888fd964ffc0cd31907fc 100644 (file)
@@ -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();
             }
         }
index ade9ed529b06414359746d4b71bf04091f44a61b..2cf45a8eb959c0b28cbb78982003eda594e6f12d 100644 (file)
@@ -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();
index 53441c02f559d71402a6d2f418821b5b133dd7d7..b90c2dd891d116a79fa0258e7e5f4ae627ac1645 100644 (file)
@@ -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();
index 14fdc30a9d4b74e41c27862d54b340715767e620..df28a9baee46f47127802c68935871f9e2963394 100644 (file)
@@ -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