我将尽力描述我的处境;我在下面有两个单独的查询:
public function getDriversCount($request) {
return Driver::count();
}
和第二个:
public function getDriversCountWithStatus($request) {
return Driver::select('status', DB::raw('count(*) as total'))
->groupBy('status')
->get();
}
现在我们可以看到这两个是两个单独的函数,并且分别查询。在第一个记录中,我要对整个drivers
表记录进行计数,但是在第二个记录中,我要根据status
组进行计数。那么,如何通过一个函数和一个查询来达到相同的结果呢?像这样的东西:
{
"absolute_total": 21,
"with_status": [
{
"status": 0,
"total": 11
},
{
"status": 1,
"total": 10
}
]
}
我是通过分别调用这两个函数手动收到的。
答案 0 :(得分:0)
您可以执行以下操作,我们在开始处设置了一个空数组,因此,如果函数返回一个空数组,您可以对此进行进一步检查:
public function getDriversCountAndStatus($request)
{
// Set the array that will be returned
$driversCountWithStatus = [];
// Get the driver count
$driverCount = Driver::count();
// Get the driver status
$driverStatus = Driver::select('status', DB::raw('count(*) as total'))
->groupBy('status')
->get();
// Combine the driver count and status into one array
$driversCountWithStatus = [
"absolute_total" => $driverCount,
"with_status" => $driverStatus;
];
return $driversCountWithStatus;
}
答案 1 :(得分:0)
因为我没有足够的代表,所以我无法发表评论。
我想我明白你的意思。最简单的方法是将几个选择链接在一起。
类似
public function getDriversCountWithStatus($request) {
return Driver::select('total', DB::raw('count(*) as total'))
->addSelect('status', DB::raw('count(*) as total group by status'))
->get();
}