我遇到了奇怪的问题,无法理解它是从哪里来的。在我的页面上,我有顶级类别
。当我单击顶级类别时,会打开页面,其中包含他们拥有产品的所有子类别。
问题是,如果我的 sub-category_1
中有 2 个产品,我会在页面上看到两次 sub-category_1
。
这是我拥有的 Controller
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
]);
}
这是 View
@foreach($subcats as $i => $subcategory)
// html
@endforeach
最佳答案
将您的查询更改为
$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();
关于php - Laravel 加载子类别时查询结果翻倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38611832/