You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9 Query Builder如何转换含OR与IS NULL的SQL查询?

Laravel 9 Query Builder 转换实现

对应你给出的SQL,转换后的Query Builder写法如下:

use Illuminate\Support\Facades\DB;

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

关键部分说明:

  • JOIN 处理:join() 对应原SQL的内连接,leftJoin() 对应左连接,参数依次是关联表名、关联字段的对应关系。
  • OR 与 IS NULL 处理:用闭包包裹两个条件,确保这两个条件是OR的逻辑关系:
    • where('pasiens.status', '!=', 'Sudah Rawat Inap') 对应 pasiens.status != 'Sudah Rawat Inap'
    • orWhereNull('pasiens.status') 直接对应 pasiens.status IS NULL
      用闭包包裹是为了避免后续添加其他条件时逻辑混乱,这是Laravel处理多条件组的标准写法。

如果你的项目中已经定义了对应的模型(比如Bed、Ruangan、Pasien),也可以通过Eloquent关联来实现,但上述写法是最直接对应原SQL的Query Builder实现。

内容的提问来源于stack exchange,提问作者Febryan Akhdani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 02:43:16