我如何获得这个雄辩的查询中生成的每个分组列(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;
}
答案 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()数组方法将帮助您计算集合以及子集合或子数组的数组。
祝你好运!