Search code examples
laraveleloquentlumen

Get records between two columns using range between two dates, Also search filter criteria


I want to get records that are joined between this date period (2022-02-15, 2022-08-20)

$users = User::whereDate('start_at', '>=', $startDate)
            ->whereDate('end_at', '<=', $endDate)
            ->get();

Solution

  • $_start_date = '2022-02-15';
    $_end_date ='2022-08-20';
    
    $users = User::where(function ($query) use ($_start_date, $_end_date) {
                        $query->where(function ($query) use ($_start_date, $_end_date) {
                            $query->whereRaw("start_date >= date('$_start_date')")
                                ->whereRaw("end_date <= date('$_end_date')");
                        })
                        ->orwhere(function ($query) use ($_start_date, $_end_date) {
                            $query->whereRaw("start_date <= date('$_start_date')")
                                ->whereRaw("end_date >= date('$_end_date')");
                        });
                    })->get();
    

    try above code this will also return between dates of start_date and end _date e.g below

    $_start_date = '2022-02-18';
    $_end_date ='2022-08-20';
    

    and also works with below dates e.g

    $_start_date = '2022-02-16';
    $_end_date ='2022-08-18';
    

    codes look like this in ide enter image description here