2016-07-27 29 views
0

Ich habe seltsames Problem und kann nicht verstehen, woher es kam. Auf meiner Seite habe ich Top Level category. Wenn ich auf die oberste Kategorie klicke, öffnet sich die Seite mit allen Unterkategorien, in denen sie Produkte haben.Abfrage verdoppelt Ergebnisse beim Laden von Unterkategorien in Laravel

Das Problem ist, dass, wenn ich 2 Produkte in habe, sehe ich zweimal sub-category_1 auf der Seite.

Dies ist der Controller, die ich

haben
public function showSubCats($categoryId) { 

$subcats = SubCategories::select('*', DB::raw('sub_category.sub_cat_id AS sub_cat_id')) 
    ->leftJoin('products', function($join) { 
      $join->on('products.sub_cat_id', '=', 'sub_category.sub_cat_id'); 
      }) 
     ->where('sub_category.category_id', '=', $categoryId) 
     ->whereNotNull('products.sub_cat_id') 
     ->get(); 

    return View::make('site.subcategory', [    
      'subcats' => $subcats    
    ]); 
} 

Hier ist der Ansicht

ist
@foreach($subcats as $i => $subcategory) 

       // html 
@endforeach 

Dies ist das Ergebnis .. sollte .. jetzt innerhalb einer Unterkategorie mit zwei Produkten sein Ich habe zwei identische Unter Katzen .. gleichen Produkte, die gleiche ID .. enter image description here

+0

Sind Sie sicher, dass Sie 'sub_cat_id' in' sub_category' und nicht 'id' haben? – C2486

Antwort

1

ändern Sie Ihre Abfrage als

$subcats = DB::table('sub_category as sc') 
    ->leftJoin('products as p', 'p.sub_cat_id', '=', 'sc.sub_cat_id')//cross check this sc.sub_cat_id may be it si sc.id 
    ->where('sc.category_id', '=', $categoryId) 
    ->whereNotNull('p.sub_cat_id') 
    ->select('*', DB::raw('sc.sub_cat_id AS sub_cat_id')) 
    ->get(); 
+0

Ja, es ist 'sub_cat_id' und hat mit dieser Abfrage immer noch die gleiche Unterkategorie wie oben auf dem Bild. –

+0

Die Idee ist zu überprüfen, ob "Unterkategorie" Produkte enthält. Jetzt ist es check table product für 'sub_cat_id' und sehe, dass es zwei Produkte gibt, bei denen 'sub_cat_id = 1' ist, deshalb wird zweimal angezeigt. Oder ich liege falsch? –

+0

Kann ich einfach '-> groupBy ('sc_cat_id')'? –