在laravel5中统计所有类别的文章

bbuxkriu  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(266)

你好,我有两张table,一张是分类表,另一张是广告单。在categories表中有4列id、parent\u category\u id、category\u slug和category\u title。在这里,父类表示主类,其余部分表示子类。用户在ads\ U listings表中的post store。现在我想找到像这样的特定类别的职位

vehicles(3)
cars(2)
motorbike(1)
cycle(0)

这里的问题是我的代码只找到子类别有职位。我的控制器代码是

public function countListingsByCategories()
{
    return DB::table("ads_listings")
        ->select("categories.category_title",DB::raw("COUNT(ads_listings.category_id) as num_listings"))
        ->join("categories", "categories.id","=","ads_listings.category_id")
        ->groupBy("ads_listings.category_id")
        ->get();
}

视图代码为:

<ul class="row catelist">
  @if(isset($categoriesNumListings) && count($categoriesNumListings))      
     @foreach($categoriesNumListings as $categoriesNumListings)          
        <li class="col-md-12"><a href="{{ route('view.listings.by.category', $categoriesNumListings->category_title) }}" title="{{ $categoriesNumListings->category_title }} ads from {{ $categoriesNumListings->category_title }}">{{ $categoriesNumListings->category_title }} <span>({{ $categoriesNumListings->num_listings }}Listings )</span></a></li>
    @endforeach
  @endif
</ul>

我的分类表是:

ads\U列表为:

rseugnpd

rseugnpd1#

我认为问题在于,当您主要想计算类别并获得广告列表的数量时,您正在计算广告列表,我将执行以下操作:
第二枪:)

public function countListingsByCategories()
{
    return DB::table("categories")
      ->select("categories.category_title",
        DB::raw("categories.title, 
          CASE 
            WHEN (categories.parent_id = 0) 
            THEN (SELECT count(ads_listings.category_id)  
              FROM ads_listings 
              WHERE ads_listings.category_id in 
                    (SELECT subcategory.id 
                    FROM categories subcategory
                    WHERE subcategory.parent_id = categories.id))
            ELSE (SELECT COUNT(ads_listings.category_id)  
                  FROM ads_listings 
                  WHERE ads_listings.category_id = categories.id)
            END as numberOfPosts, 
          CASE 
            WHEN (categories.parent_id = 0) 
            THEN (select 'Category') 
            ELSE (select 'subCategory')
            END as type 
        FROM categories"))
      ->get();

}

相关问题