所以,我有一个类似于这样的数据库表:
id | title | category | author | post | created_at | updated_at
类别列是文本值,因此它目前具有诸如“技术”,“网络”和“动物”等值。我需要做的是计算类别列中的每个类别值,并输出如下:
Tech (2)
Animal (2)
Web (1)
现在,我确实有点工作。它目前看起来像:
Tech (1) (1)
Animal (1) (1)
Web (1)
我的控制器中的查询是:
$categoryCount = Post::select(DB::raw('count(*) as cat_count, category'))
->groupBy('category')
->count();
我的观点目前看起来像:
@if(count($category) > 0)
@foreach($category as $cat)
<a href="{{ URL('category/'.str_replace(' ', '-', $cat->name)) }}"
class="list-group-item">{{ $cat->name }}
@foreach($posts as $post)
@if($post->category == $cat->name)
({{ $categoryCount }})
@endif
@endforeach
</a>
@endforeach
@endif
我对Laravel本身很陌生,所以我还在学习。任何帮助实现我想要的东西将不胜感激。
答案 0 :(得分:1)
您执行数据库原始计数,然后再计数。它确实会一直返回。更改您的查询:
$categoryCount = Post::select(DB::raw('count(*) as cat_count, category'))
->groupBy('category')
->get();
你的结果应该是不同的。顺便说一句,这与Laravel没有任何关系,只是你数了算数: - )