#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();