Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Hi every one i want to pass condition like this: (start <= date1 and end >= date1) || (start <= date2 and end >= date2) in laravel. how to pass with this query?

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

Any one can helpe ? thanks


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
805 views
Welcome To Ask or Share your Answers For Others

1 Answer

You can use where statement like the following:

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

This is how to create a where clause with a inner query that handles the or part of the where. Make sure $date1 and $date2 are initialised before the query.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share

548k questions

547k answers

4 comments

86.3k users

...