Laravel : Возможно ли иметь 2 свидания?

#php #mysql #laravel #query-builder

#php #mysql #laravel #конструктор запросов

Вопрос:

В нашем приложении мы использовали средство выбора диапазона дат. В одном из наших модулей есть 2 фильтра даты, ниже приведен пример фильтра, используемого пользователем.

Фильтр даты

 date from           : 09-20-2020
date to             : 09-20-2020
date_created from   : 01-01-2020
date_created from   : 12-31-2020
  

Схема таблицы

 name
date
date_created
  

Модель

 return DB::table('activities')
            ->whereBetween('date', [date('Y-m-d', strtotime($data['start_date'])), date('Y-m-d', strtotime($data['end_date']))])
            ->whereBetween('date_created', [date('Y-m-d', strtotime($data['creation_date'])), date('Y-m-d', strtotime($data['creation_end_date']))])
                ->get()->toArray();
  

Теперь я хочу получить все данные в пределах даты и даты создания

Вопрос: Возможно ли иметь 2 фильтра даты?

Ответ №1:

попробуйте это в where() добавить функцию обратного вызова

 return DB::table('activities')->where(function ($q) use ($data) {
    $q->whereBetween('date', [date('Y-m-d', strtotime($data['start_date'])), date('Y-m-d', strtotime($data['end_date']))])
        ->whereBetween('date_created', [date('Y-m-d', strtotime($data['creation_date'])), date('Y-m-d', strtotime($data['creation_end_date']))]);
})->get()->toArray();