2016-07-27 130 views
0

我有一個奇怪的問題,無法理解它來自哪裏。在我的頁面上,我有Top Level category。當我點擊頂級類別時,會打開包含所有產品子類別的頁面。在Laravel中加載子類別時查詢加倍結果

問題是,如果我在sub-category_1中有2個產品,我會在頁面上看到兩次sub-category_1

這是控制器,我有

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    
    ]); 
} 

下面是這個視圖

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

       // html 
@endforeach 

這是結果..應該是一個子類別裏面兩個產品..現在我有兩個相同的子貓..相同的產品,相同的ID .. enter image description here

+0

你確定你在'sub_category'中有'sub_cat_id'而不是'id'嗎? – C2486

回答

1

更改您的查詢爲

$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

是的,它是'sub_cat_id',並且這個查詢在圖像上仍然有兩次與上面相同的子類別。 –

+0

這個想法是檢查'子類別'是否有產品。所以現在它是檢查產品的'sub_cat_id',看到有兩個產品,其中'sub_cat_id = 1'可能是這就是爲什麼顯示兩次。或者我錯了? –

+0

我可以使用' - > groupBy('sc.sub_cat_id')'嗎? –