簡體   English   中英

計算具有特定類別和標簽的帖子laravel

[英]Count post with specific categories and tags laravel

我有3個模型Post, Tag and Category Post modelTag model與數據透視表具有多對多關系, Post modelCategory model具有一對多的關系。

例如,假設我具有以下標簽和類別:

tag name = php,

category name = tutorial, project, testing

no. of post having above attribute = 3 [ all post have different category, same tag]

我想算的帖子,並顯示具有上述的分類和標簽類別名稱php在視圖中命名archive-php

這是我到目前為止所做的:

我在控制器中的方法

 public function countTag()
{
    $posts = Post::whereHas('tag', function($r) {
            $r->where('name','=', "php");
        })->get();
    return view('archive-php')
           ->withPosts($posts)
}

我的代碼在視圖中:

@foreach ($posts as $post)
    <li><a href="#">{{ucfirst($post->category->name)}}</a>
         {{$post->count()}}
    </li>
@endforeach

上面的代碼成功顯示了相關的類別名稱(3個類別名稱) dd($posts); 轉儲3個數組,但計數數據庫中的所有帖子。 我在這里錯過了什么難題,或者那是不可能的?

為此,您應該獲得所有類別。 然后獲取/計數具有php標簽的帖子

1-方法

$categories = Category::all();

foreach($categories as $category) {
  $category->phpPosts = Post::where('category_id', '=', $category->id)->whereHas('tag', function($r) {
            $r->where('name','=', "php");
        })->get();
}

然后像這樣使用它:

@foreach ($categories as $category)
    <li><a href="#">{{ucfirst($category->name)}}</a>
         {{ $category->phpPosts->count() }}
    </li>
@endforeach

可以通過簡單的方法完成,例如:

2-方法

$categories = App\Category::with(['posts' => function ($query) {
    $query->whereHas('tag', function($r) {
            $r->where('name','=', "php");
        });
}])->get();

但是我不確定這是否正確。 嘗試方法1.如果我正確理解了您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM