php - Laravel 加载子类别时查询结果翻倍

标签 php mysql laravel-4

我遇到了奇怪的问题,无法理解它是从哪里来的。在我的页面上,我有顶级类别。当我单击顶级类别时,会打开页面,其中包含他们拥有产品的所有子类别。

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

这就是结果..应该是一个子类别,里面有两种产品..现在我有两个相同的子类别..相同的产品,相同的id.. enter image description here

最佳答案

将您的查询更改为

$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/

相关文章:

javascript - 从 Laravel 数据库中实时提取数据

mysql - 如何使用 Laravel all() 查询排除某些行

java - Cakephp Json 输出令人困惑

php - 有没有办法将 php 放在 IE 条件注释中

php - 更新 NOTORM 中的单个记录

php - 使用 Eloquent Laravel 中的未定义属性

php - 使用 PHP 从 youtube 下载视频 - 仍然可以吗?

php - 一些 SEO 工具告诉我该网站正在重定向到一个奇怪的 url

php - 扩展 PDO 准备方法以替换查询前缀

PHP 常量(mysql 参数)和 include 不起作用