如何传递(开始 <= date1 和结束 >= date1)|| (start <= date2 and end >= date2) laravel 中的条件

How to pass (start <= date1 and end >= date1) || (start <= date2 and end >= date2) condition in laravel

大家好,我想通过这样的条件: (开始 <= date1 并且结束 >= date1)|| (开始 <= date2 并且结束 >= date2) in laravel。 如何通过此查询?

$events = DB::table('christophheich_calendar_entries')->whereNull('deleted_at');

有人可以帮忙吗? 谢谢

您可以使用如下 where 语句:

$events = DB::table('christophheich_calendar_entries')
    ->where(function($q) use($date1, $date2) {
        $q->where(function($q2) use($date1) {
            $q2->where('start', '<=', $date1)->where('end', '>=', $date1);
        })->orWhere(function($q2) use($date2) {
            $q2->where('start', '<=', $date2)->where('end', '>=', $date2);
        });
    })
    ->whereNull('deleted_at');

这是创建 where 子句的方法,其中包含处理 where 的 or 部分的内部查询。确保 $date1$date2 在查询之前初始化。