计数 post 具有特定类别和标签 laravel
Count post with specific categories and tags laravel
我有 3 个模型 Post, Tag and Category
。 Post model
和 Tag model
与 pivot 是多对多关系 table 和 Post model
和 Category model
是一对多关系。
例如,假设我有以下标签和类别:
tag name = php,
category name = tutorial, project, testing
no. of post having above attribute = 3 [ all post have different category, same tag]
我正在尝试计算 post 并在名为 archive-php
的视图中显示具有上述类别和标签 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 个数组但计算数据库中的所有 post。我在这里遗漏了哪一块拼图或者它是不可能的?
要做到这一点,您应该获取所有类别。然后 get/count 个具有 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();
但我不确定它是否正确。试试方法一。如果我猜对了。
我有 3 个模型 Post, Tag and Category
。 Post model
和 Tag model
与 pivot 是多对多关系 table 和 Post model
和 Category model
是一对多关系。
例如,假设我有以下标签和类别:
tag name = php,
category name = tutorial, project, testing
no. of post having above attribute = 3 [ all post have different category, same tag]
我正在尝试计算 post 并在名为 archive-php
的视图中显示具有上述类别和标签 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 个数组但计算数据库中的所有 post。我在这里遗漏了哪一块拼图或者它是不可能的?
要做到这一点,您应该获取所有类别。然后 get/count 个具有 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();
但我不确定它是否正确。试试方法一。如果我猜对了。