如何在 Laravel 查询中使用多个 OR,AND 条件

2022-08-30 21:44:41

我在 laravel 中查询需要帮助

我的自定义查询:(返回正确的结果)

Select * FROM events WHERE status = 0 AND (type="public" or type = "private")

如何在Laravel中编写此查询。

Event::where('status' , 0)->where("type" , "private")->orWhere('type' , "public")->get();

但它返回所有状态不为 0 的公共事件。

我正在使用 Laravel 5.4


答案 1

将闭包传递到 :where()

Event::where('status' , 0)
     ->where(function($q) {
         $q->where('type', 'private')
           ->orWhere('type', 'public');
     })
     ->get();

https://laravel.com/docs/5.4/queries#parameter-grouping


答案 2

在你的情况下,你可以重写查询...

select * FROM `events` WHERE `status` = 0 AND `type` IN ("public", "private");

而雄辩:

$events = Event::where('status', 0)
    ->whereIn('type', ['public', 'private'])
    ->get();

如果要将 OR/AND 分组,请使用闭包:

$events = Event::where('status', 0)
    ->where(function($query) {
        $query->where('type', 'public')
            ->orWhere('type', 'private');
    })->get();

推荐