如何获得每个结果的计数

时间:2018-07-30 04:02:17

标签: php laravel

我如何获得这个雄辩的查询中生成的每个分组列(some_id)结果的记录总数? (也欢迎使用数据库查询生成器或原始PHP生成的答案)。

$results = \App\MyModel::groupBy('some_id')
                       ->whereNotNull('some_id')
                        // some query here to get sum of each grouped column records                        
                        ->get();

期望的结果将是这样,当我遍历结果时,对于每个分组结果,我还可以具有一个名为totalRecords的字段。即

foreach($results as $result) {
    echo $result->totalRecords;
}

3 个答案:

答案 0 :(得分:2)

您可以这样:-

$results = \App\MyModel::select('*', DB::raw('count(some_id) as totalRecords'))
        ->groupBy('some_id')
        ->whereNotNull('some_id')
        ->get();
foreach ($results as $result) {
 echo $result->totalRecords;
}

答案 1 :(得分:2)

$results = DB::table('your_table')
                  ->select('some_column_name', DB::raw('count(some_id) as totalRecords'))
                  ->whereRaw('some_id IS NOT NULL')                  
                  ->groupBy('some_id')
                  ->get();

答案 2 :(得分:0)

Collection提供自身的count()方法。 但是有时候,一旦您使用get()获取整个集合。您可以在集合中使用count方法,例如:

$results = \App\MyModel::groupBy('some_id')
                       ->whereNotNull('some_id')
                        // some query here to get sum of each grouped column records                        
                        ->get();
dd($results->count());

此外,如果您的数据不是收集的,那么Php数组提供的计数方法也可以使用:

dd(count($results));

我仅将dd方法用于调试目的。它将在实际输出之前向您显示结果。

count()数组方法将帮助您计算集合以及子集合或子数组的数组。

祝你好运!