Если вы спрашиваете, как добавить новое ограничение для пары новых полей базы данных, start_time
и stop_time
, я думаю, что вы достаточно близки к своему текущему запросу для $conflictTraining
.
Вы не указали, в чем заключалась конкретная проблема, но я предполагаю, что эти строки:
$start_time = Carbon::createFromFormat('d-m-Y H:s', $date_seance . ' ' . $hour_start);
$stop_time = Carbon::createFromFormat('d-m-Y H:s', $date_seance . ' ' . $hour_end);
производят что-то, что не соответствует формату в базе данных для start_time
и stop_time
,Если вы разбиваете то, что создали в этих переменных, вы в основном говорите Carbon создать переменную, которая выглядит примерно так: «15-10-2019 10:00:00» (с оговоркой, что 00 - секунды, а неминут, с тех пор как вы использовали s
вместо i
).
Итак, ваш первый вопрос должен звучать так: «В моей базе данных хранится время начала в точном формате, который отображается, когда я выгружаю $start_time
?»Если нет, запрос никогда не произведет попадание. Конечно, вы можете хранить время начала и окончания в базе данных как дату и время ... но имейте в виду, что вы будете ограничены как датой, так и временем , если вы это сделаете. Другими словами, если вы просто хотите, чтобы время начала составило 10:00 в любой день, это не сработает, потому что база данных хранит 10:00 на определенную дату .
Один из способов решения этой проблемы - сделать это как можно более простым. Если эти времена НЕ связаны с определенной датой и всегда будут в час - сохраните их как простое число. Например, 08
или 22
. Тогда вам не нужно использовать Carbon, вы просто сравниваете простые целые числа. Если вы хотите использовать фактическое время (вам может понадобиться 18:20 или что-то в этом роде), это не намного сложнее - вам просто нужно изменить способ хранения и создания времени.
Вы можете поиграть с этим, но общей идеей будет просто сохранить / создать время в согласованном формате между базой данных и тем, что вы создаете из формы. Так что для start_time
вы могли бы сэкономить часы и минуты в другом столбце. Или рассчитайте количество минут после полуночи и сохраните как целое число. Или даже сохранить в виде текста и использовать Carbon с обеих сторон, чтобы превратить его в форматированный объект.
Лично мне проще всего работать с целыми числами, поэтому я бы сделал калькулятор (может быть, минуты за полночь) и использовал егопо всей программе, чтобы просто остаться с целыми числами. Есть много способов решить эту проблему - надеюсь, это объяснит вам проблему.