【发布时间】:2020-04-07 05:28:19
【问题描述】:
之前我可以正常显示数据,这里还是没有过滤器,这是我的代码和结果。
代码:
$app = DB::select(DB::raw("
select
pel.id as id_pelamar,
nm_pelamar as nama_pelamar,
nm_rs as rumah_sakit,
nm_unit as unit,
nm_jabatan as jabatan,
pel.tgl_lahir as tgl_lahir,
his.status as status,
pel.tanggal_ins as tanggal
from (SELECT MAX(id) AS id_tr, id_pelamar FROM t_history_pelamar GROUP BY id_pelamar) x
inner join t_history_pelamar his on his.id=x.id_tr
right join t_pelamar pel on pel.id=his.id_pelamar
inner join m_rumah_sakit rs on rs.kd_rs=pel.kd_rs
inner join m_unit u on u.kd_unit=pel.kd_unit
inner join m_jabatan j on j.kd_jabatan=pel.kd_jabatan
"));
我添加过滤器后,没有数据显示。
$nm_rs = '';
$from = '2020-04-01 00:00:00+07';
$until = '2020-05-01 024:00:00+07';
$name = '';
$app = DB::select(DB::raw("
select
pel.id as id_pelamar,
nm_pelamar as nama_pelamar,
nm_rs as rumah_sakit,
nm_unit as unit,
nm_jabatan as jabatan,
pel.tgl_lahir as tgl_lahir,
his.status as status,
pel.tanggal_ins as tanggal
from (SELECT MAX(id) AS id_tr, id_pelamar FROM t_history_pelamar GROUP BY id_pelamar) x
inner join t_history_pelamar his on his.id=x.id_tr
right join t_pelamar pel on pel.id=his.id_pelamar
inner join m_rumah_sakit rs on rs.kd_rs=pel.kd_rs
inner join m_unit u on u.kd_unit=pel.kd_unit
inner join m_jabatan j on j.kd_jabatan=pel.kd_jabatan
where
(nm_rs = :nm_rs) AND
(pel.tanggal_ins BETWEEN :from AND :until) AND
(nm_pelamar like :name)
"), ["nm_rs" => $nm_rs, "from" => $from, "until" => $until, "name" => "%".$name."%"]
);
return json_encode($app);
谢谢。
【问题讨论】:
-
您有 0 条记录符合您的 where 子句。为了调试,我会通过一一删除它们来查明哪个
where语句导致空结果集。nm_rs和name为空。你有那些字段为空值的记录吗? -
确保“nm_rs”和“name”字段中有空白字符串,因为您将其初始化为空白并传递给查询。
-
我没有一条值为null的记录,但是如果没有来自$nm_rs或者其他什么的请求,就意味着所有的数据都会出现没有过滤器。
-
嗯,我会从哪里一一检查,缩小调试过程,谢谢
-
它已解决,当我需要 ewquest 的空值时,我忘记在每种情况下添加 like (not '=') ..
标签: php postgresql laravel-5.8