status,即ranap
和
ralan
,我想在其中计算所有数据、ralan数据和ranap数据的总计。但在最后一次查询运行中它肯定会产生 0 值。在我的例子中
ralan总是得到值0,因为它是上次执行的。当我尝试查看查询时,我发现最后一个查询有 2 个 where 状态,而在我的数据中只有 1 个状态,即 ralan 和 ranap 之间,其中之一。
这是我的代码,
$msg = "Data detail pemberian obat";
$data = \App\Models\DetailPemberianObat::select('tgl_perawatan', 'jam', 'no_rawat');
if ($request->bulan) {
$msg .= " bulan {$request->bulan}";
$data = $data->whereMonth('tgl_perawatan', $request->bulan)->whereYear('tgl_perawatan', date('Y'));
} else {
$msg .= " bulan ini ";
$data = $data->whereMonth('tgl_perawatan', date('m'))->whereYear('tgl_perawatan', date('Y'));
}
$all = $data->count();
$ranap = $data->where('status', 'Ranap')->count();
$ralan = $data->where('status', 'Ralan')->count();
$msg .= " berhasil diambil";
return isSuccess([
'all' => $all,
'ranap' => $ranap,
'ralan' => $ralan,
], $msg);
这就是我得到的结果
{
"success": true,
"message": "Data detail pemberian obat bulan ini berhasil diambil",
"data": {
"all": 32589,
"ranap": 21136,
"ralan": 0
}
}
以下是我在查看 ranal 变量的查询时得到的查询,最后一个对数据库运行查询。
"select `tgl_perawatan`, `jam`, `no_rawat` from `detail_pemberian_obat` where month(`tgl_perawatan`) = ? and year(`tgl_perawatan`) = ? and `status` = ? and `status` = ?"
实际上,这个问题可以通过创建 2 个不同的变量来运行数据库查询来解决,例如 data 和 data2。但因为我认为仅使用 1 个变量,我的代码会更简洁且更易于阅读。然而,如果这是不可能的,那就是我现在可以应用和想到的唯一方法。也许还有一件事, 如果总数据是1000个,其中数据是500个,那么另外500个可以说是准确的数据,但是我对使用这个方法很怀疑。
$data->where('status', 'Ranap')->count()
时,您正在修改原始
$data
查询。你可以试试这个:
$msg = "Data detail pemberian obat";
$data = \App\Models\DetailPemberianObat::select('tgl_perawatan', 'jam', 'no_rawat');
if ($request->bulan) {
$msg .= " bulan {$request->bulan}";
$data = $data->whereMonth('tgl_perawatan', $request->bulan)->whereYear('tgl_perawatan', date('Y'));
} else {
$msg .= " bulan ini ";
$data = $data->whereMonth('tgl_perawatan', date('m'))->whereYear('tgl_perawatan', date('Y'));
}
$all = $data->count();
$ranap = (clone $data)->where('status', 'Ranap')->count();
$ralan = (clone $data)->where('status', 'Ralan')->count();
$msg .= " berhasil diambil";
return isSuccess([
'all' => $all,
'ranap' => $ranap,
'ralan' => $ralan,
], $msg);