2016-07-27 132 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')'吗? –