我有一个查询,其中我可以使用withCount()获得计数总数。
$applications = Application::with('company')->withCount([
'task',
'task as task_updated_count' => function ($query) {
$query->where('task_status', '!=', 1);
}])->get();
在我看来,我可以循环浏览并显示结果。
<table class="table">
<thead>
<tr>
<th>Applications</th>
<th class="text-center">Tasks</th>
<th class="text-center">Updated Tasks</th>
</tr>
</thead>
<tbody>
@foreach ($applications as $application)
<tr>
<td>{{ $application->company->company_acronym }}</td>
<td>{{ $application->application_name }}</td>
<td class="text-center">{{ $application->task_count }}</td>
<td class="text-center">{{ $application->task_updated_count }}</td>
</tr>
@endforeach
</tbody>
</table>
这显然会给我一张表格,列出结果,并为每个$ application列出$ application-> company-> company_acronym。
我要按公司“ $ application-> company-> company_acronym”列出应用程序。
结果将是:
公司1的首字母缩写词
-AppName计数
-AppName计数
-AppName计数
公司2的首字母缩写
-AppName计数
-AppName计数
-AppName计数
公司3的首字母缩写
-AppName计数
-AppName计数
-AppName计数
答案 0 :(得分:1)
在集合中使用groupBy
函数按首字母缩写进行分组。
$applications = Application::with('company')->withCount([
'task',
'task as task_updated_count' => function ($query) {
$query->where('task_status', '!=', 1);
}])->get();
$applicationGroups = $applications->groupBy(function($application) {
return $application->company->company_acronym;
});
然后,您可以遍历各个组以获得所需的输出。
<table class="table">
<thead>
<tr>
<th>Applications</th>
<th class="text-center">Tasks</th>
<th class="text-center">Updated Tasks</th>
</tr>
</thead>
<tbody>
@foreach ($applicationGroups as $group => $applications)
<tr>
<td colspan="3">{{ $group }}</td>
</tr>
@foreach ($applications as $application)
<tr>
<td>{{ $application->application_name }}</td>
<td class="text-center">{{ $application->task_count }}</td>
<td class="text-center">{{ $application->task_updated_count }}</td>
</tr>
@endforeach
@endforeach
</tbody>
</table>
答案 1 :(得分:0)
请检查以下代码
$applications = Application::with('company')->with([
'task' => function ($query) {
$query->where('task_status', '!=', 1)->count();
},
'task_updated_count' => function ($query) {
$query->where('task_status', '!=', 1)->count();
}])->get();