Получить сбор данных и ограничить их по дате начала и окончания - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть модель SpecialPrice, в которой хранятся данные, основанные на столбцах start_date и end_date, например, на следующем экране

enter image description here

: я хочу достичь следующего:

  1. , если пользователь выбирает дату с 2020-04-23 по 2020-04-26, я должен получить только первый объект.
  2. , но если пользователь выбирает дату с 2020-04-23 до 2020-04-27 я должен получить только первый и второй объекты.
  3. , но если пользователь выбирает дату с 2020-04-23 по 2020-05-01, я должен получить три объекта и т.д. c.

В моей модели у меня есть ограниченная функция, и я пытался, однако я знаю, что что-то не так

public function scopeBetweenDates($query,$start_date , $end_date){
    return $query->whereRaw('? between start_date and end_date', [$start_date])
                ->orWhereRaw('? between start_date and end_date', [$end_date]);
}

заранее спасибо

1 Ответ

0 голосов
/ 23 апреля 2020

Это сработало для меня

public function scopeWhereIntersectsStartDate($query,$start_date){

    return  $query->whereNotNull('start_date')
                  ->where('start_date' , '>' , $start_date)
                  ->orWhere('end_date' , '>' , $start_date);
}

public function scopeWhereIntersectsEndDate($query,$end_date){

    return  $query->whereNotNull('end_date')
                  ->where('end_date' , '<' , $end_date)
                  ->orWhere('start_date' , '<' , $end_date);
}
...