计算数据库列文本值 - Laravel

时间:2016-06-03 13:57:39

标签: php mysql laravel

所以,我有一个类似于这样的数据库表:

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本身很陌生,所以我还在学习。任何帮助实现我想要的东西将不胜感激。

1 个答案:

答案 0 :(得分:1)

您执行数据库原始计数,然后再计数。它确实会一直返回。更改您的查询:

$categoryCount = Post::select(DB::raw('count(*) as cat_count, category'))
                       ->groupBy('category')
                       ->get();

你的结果应该是不同的。顺便说一句,这与Laravel没有任何关系,只是你数了算数: - )