在Laravel中加载子类别时,查询结果加倍

时间:2016-07-27 11:35:13

标签: php mysql laravel-4

我有一个奇怪的问题,无法理解它的来源。在我的页面上,我有Top Level category。当我点击顶级类别时,打开的页面包含他们拥有产品的所有子类别。

问题是,如果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

1 个答案:

答案 0 :(得分: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();