Laravel:使用过滤器选择原始查询不会返回任何内容

问题描述 投票:0回答:1

以前我能够正常显示数据,这里仍然没有任何过滤器,这是我的代码和结果。

代码:

$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 
    "));

结果:result

添加过滤器后,没有数据显示。

$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);

谢谢。

php postgresql laravel-5.8
1个回答
0
投票

[已解决]

  1. 当我需要请求的空值时,我忘记在每种情况下都添加(而不是'=')。
  2. 我从时间戳转换为日期,在这里我使用了PostgreSql

这里是我的代码:

$nm_rs = '';
$from = '2019-11-28';
$until = '2020-04-02';
$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 like :nm_rs) AND 
        (pel.tanggal_ins::timestamp::date >= :from AND pel.tanggal_ins::timestamp::date <= :until) AND
        (nm_pelamar like :name)
    "), [
        "nm_rs" => "%".$nm_rs."%", 
        "from" => "%".$from."%", 
        "until" => "%".$until."%", 
        "name" => "%".$name."%"
]);
© www.soinside.com 2019 - 2024. All rights reserved.