Запрос между датами или совпадающими диапазонами дат в laravel и красноречии

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

Допустим, текущая неделя начинается 12.02 и заканчивается 12.08, и у меня есть заказ на обслуживание, который идет с 12.01 по 12.10, он превосходит диапазон дат текущей недели на один день в дате начала и два дня до даты окончания.

Если бы я смог объясниться, как мне сделать запрос к базе данных, чтобы получить заказы на обслуживание, которые происходят в течение текущей недели, но даты начала и окончания выходят за пределы диапазона текущей недели?

Вот код, который я использую для запроса базы данных для SO между датами:

->whereBetween("service_orders.initial_date", array($initialDate, $finalDate))
->orWhereBetween("service_orders.final_date", array($initialDate, $finalDate))
->where("service_orders.completed_date", "=", null)
->get();

Спасибо за вашу помощь!


person Marcos Curvello    schedule 06.12.2018    source источник


Ответы (2)


Попробуй это,

->where("service_orders.initial_date", '<', $finalDate)
->where("service_orders.final_date", '>', $initialDate)
->where("service_orders.completed_date", "=", null)
->get();
person Sagar Gautam    schedule 06.12.2018

Попробуй это:

->where(function($q) use($initialDate, $finalDate){
   $q->whereBetween("service_orders.initial_date", array($initialDate, $finalDate))
     ->orWhereBetween("service_orders.final_date", array($initialDate, $finalDate));
})
->where("service_orders.completed_date", "=", null)
->get();
person Vishal Sancheti    schedule 07.12.2018