Laravel - Проверьте, сталкивается ли событие с другим событием. - PullRequest
0 голосов
/ 03 октября 2018

У меня есть таблица "employee_pauses", которая содержит паузы во время смены сотрудников.В каждой строке есть столбцы start_date и end_date, которые являются datetime.

Когда я назначаю встречу, я выбираю диапазон нового события и затем отправляю запросы контроллеру, где я их получаю.Я должен проверить, есть ли «пауза» между временем начала и окончания встречи.

Это должно выглядеть так:


employee_pauses.start_date = 2018-10-03 08: 00: 00

employee_pauses.end_date = 2018-10-03 08: 30: 00


$ request-> get ('app_start_time') = 2018-10-03 07: 00: 00

$ request-> get ('app_end_time') = 2018-10-03 10: 00: 00


У меня должна быть возвращенная коллекция с 1 строкой, котораямежду двумя запрошенными временами есть пауза.

Я пробовал этот запрос.Что я делаю не так?

$pauses = EmployeePause::whereRaw("((start_date < ? AND end_date > ?) OR (start_date < ? AND end_date > ?))", [$start_time, $start_time, $end_time, $end_time])
                ->where('employee_id', $request->get('employee_id'))->get();

Моя таблица "employee_pauses" выглядит следующим образом:

id - int (10) primary_key

employee_id - int (11)

start_date - datetime

end_date - datetime

1 Ответ

0 голосов
/ 03 октября 2018

Вам нужно Employee Pauses, где request start_date and end_date находится между employee_pause start_date and end_date

Я думаю, это то, что вы ищете.

$start_date = $request->app_start_time;
$end_date = $request->app_end_time;
$employee_id = $request->employee_id;

EmployeePause::where('id', $employee_id)
    ->whereBetween('start_date', [$start_date, $end_date])
    ->whereBetween('end_date', [$start_date, $end_date])
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...