Laravel 9中的Query Builder OR和IS NULL

6l7fqoea  于 2023-04-07  发布在  其他
关注(0)|答案(2)|浏览(135)

我有一个这样的查询

SELECT ruangans.nama_ruangan, beds.id AS idBed, beds.nomor_bed, pasiens.nama, pasiens.status
FROM `beds` JOIN ruangans ON beds.id_ruangan = ruangans.id
LEFT JOIN pasiens ON beds.id = pasiens.id_bed
WHERE pasiens.status != 'Sudah Rawat Inap' OR pasiens.status IS NULL;

我还是Laravel Query Builder的新手,我的问题是如何将SQL查询转换为Query Builder,特别是OR和IS NULL操作。谢谢

iecba09b

iecba09b1#

DB::table("beds")
->join("ruangans", "beds.id_ruangan", "=", "ruangans.id")
->leftJoin("pasiens", "beds.id", "=", "pasiens.id_bed")
->select("ruangans.nama_ruangan", "beds.id as idbed", "beds.nomor_bed", "pasiens.nama", "pasiens.status")
->where("pasiens.status", "!=", 'Sudah Rawat Inap')
->orWhereNull("pasiens.status")
->get();

Laravel提供了几种where方法的变体,可以在查询中添加“where”子句。你可以在这里找到它们:https://laravel.com/docs/10.x/queries#basic-where-clauses

dgtucam1

dgtucam12#

你可以用

$query = DB::table('beds')
    ->join('ruangans', 'beds.id_ruangan', '=', 'ruangans.id')
    ->leftJoin('pasiens', 'beds.id', '=', 'pasiens.id_bed')
    ->select(
        'ruangans.nama_ruangan',
        'beds.id AS idBed',
        'beds.nomor_bed',
        'pasiens.nama',
        'pasiens.status'
    )
    ->where(function ($query) {
        $query->where('pasiens.status', '!=', 'Sudah Rawat Inap')
              ->orWhereNull('pasiens.status');
    })
    ->get();

如你所知,我们使用where来过滤数据。在这里,我使用了子查询机制来过滤同一个pasiens表中的数据。
阅读更多关于Database: Query Builder

相关问题