Как проверить пересеченное время Laravel - PullRequest
0 голосов
/ 29 марта 2020

У меня есть данные о времени в моей базе данных, как это

+-------------+------------+------------+
|    id       | time_start | time_end   |
+---------------------------------------+
|    1        |  07:00     |  10:00     |
|    2        |  12:00     |  14:00     |
|             |            |            |
|             |            |            |
|             |            |            |
|             |            |            |
|             |            |            |
|             |            |            |
+-------------+------------+------------+

, но я вставил пересеченное время,

time_start : 08:00
time_end : 09:00

or

time_start : 08:00
time_end : 11:00

Как проверить, если time_start и time_end не между датой в базе данных?

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Я даю вам способ сделать это в необработанном SQL, не стесняйтесь переводить его в красноречивый ригмарол:

SET @tstart='10:00';
SET @tend='11:00';

INSERT INTO t_time_range (time_start, time_end)
SELECT @tstart, @tend 
WHERE  NOT EXISTS
       ( SELECT 1 
         FROM   t_time_range
         WHERE  time_start >= @tstart AND time_start < @tend
         OR     time_end > @tstart    AND time_end <= @tend
         OR     @tstart >= time_start AND @tstart < time_end
       );
0 голосов
/ 29 марта 2020

Предположим, ваша модель time, время, которое вы хотите ввести: $time_start и $end_time.

$time = DB::table('time')
->where(['time_start', $time_start], 
        ['time_end', $end_time])
->first(); // see if there already is an entry

Если $ time не дает результата, введите время в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...