2016-07-27 14 views
0

私は奇妙な問題があり、どこから来たのか理解できません。私のページにはTop Level categoryがあります。私がトップレベルのカテゴリをクリックすると、商品を持っているすべてのサブカテゴリが開いたページになります。Laravelでサブカテゴリをロードすると、クエリの結果は2倍になります

sub-category_1に2つの製品がある場合は、ページにsub-category_1の2回表示されます。

この私がここで

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 

あります。..今..内部の2つの製品と、一つのサブカテゴリーである必要があり、私は持っています2つの同一のサブ猫..同じ製品、同じ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'であり、このクエリでは、画像上で上記と同じサブカテゴリが2度得られます。 –

+0

「サブカテゴリ」に商品が含まれているかどうかを確認することです。だから、 'sub_cat_id'のチェックテーブル製品で、' sub_cat_id = 1'が2回表示される理由は2つあります。または私は間違っていますか? –

+0

' - > groupBy( '​​sc.sub_cat_id')'を使うことはできますか? –

関連する問題