считать пост со всеми категориями в Laravel 5 - PullRequest
0 голосов
/ 14 мая 2018

привет, у меня есть две таблицы: одна категория, другая - ads_listings. В таблице категорий есть 4 столбца id, parent_category_id, category_slug, category_title. Здесь parent_category_id 0 обозначает основную категорию, а остальная часть обозначает подкатегорию. пользовательский почтовый магазин в таблице ads_listings. Теперь я хочу найти сообщение с определенными категориями, такими как

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>

Моя таблица категорий:

category table

таблица объявлений - это: list table

1 Ответ

0 голосов
/ 14 мая 2018

Я думаю, что проблема в том, что вы подсчитываете ad_listings, когда вы в первую очередь хотите посчитать категории и получить количество ad_listings, я бы сделал что-то вроде:

Второй выстрел :)

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();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...