我在一个请求中获取具有多个条件的总数据时遇到问题,所以我所说的数据有
地位
即
ranap
和
ralan
,其中我想计算所有数据的总和,ralan数据和ranap数据。但它在最后一次查询运行中肯定会产生一个值0。
就我而言
ralan总是得到值0,因为它是上次执行的
。当我尝试查看查询时,我发现
上一个查询有2个where状态
,而在我的数据中,只有一种状态,即在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变量的查询时得到的查询,ranal变量是最后一个对数据库运行查询的变量。
"select `tgl_perawatan`, `jam`, `no_rawat` from `detail_pemberian_obat` where month(`tgl_perawatan`) = ? and year(`tgl_perawatan`) = ? and `status` = ? and `status` = ?"
实际上,这个问题可以通过创建两个不同的变量来解决,比如data和data2。但因为我认为只使用1个变量,我的代码更简洁,更容易阅读。然而,如果这不可能,这是我目前唯一可以应用和想到的方法。
也许还有一件事,
如果总数据是1000,数据是500,那么其他500可以说是准确的数据,但我对使用这种方法很怀疑。