У меня есть два запроса, полученные из двух представлений. Два представления имеют одинаковые столбцы в одном и том же порядке. Я сделал объединение двух, чтобы вернуть результаты на временном интервале. Я бы хотел, чтобы это было утром.
- предложить два пляжа утром и днем
- иначе мы предлагаем днем и завтра утром.
Вот моя функция
public static function chercherTourneeOuPlageHoraire($eTypeTournee, $id_prestataire)
{
//query
$query = DB::table('v_tournee_infos');
$query_m = DB::table('v_mission_infos');
//$now = Carbon::now();
$now = Carbon::parse("2020-04-29 06:00:00");
if ($now->isWeekend()) {
$h_i_s = $now->format('H:i:s');
$now = Carbon::parse($now->endOfWeek()->addDay()->format('Y-m-d ' . $h_i_s));
}
$dates = [];
//we are in the morning
if ($now < $now->clone()->format('Y-m-d 13:00:00')) {
$first_plage = [$now->clone()->format('Y-m-d 13:00:00'), $now->clone()->format('Y-m-d 21:00:00')]; //-> Y-m-d 13:00 à 19:00
$second_plage = [$now->clone()->addDays(1)->format('Y-m-d 08:00:00'), $now->clone()->addDays(1)->format('Y-m-d 13:00:00')];
$query_builder = $query->Where(function ($q) use ($first_plage, $eTypeTournee, $id_prestataire) {
$q->whereBetween('v_tournee_infos.start_date', $first_plage)
->where('v_tournee_infos.type', $eTypeTournee);
})
->orWhere(function ($q) use ($second_plage, $eTypeTournee, $id_prestataire) {
$q->orWhereBetween('v_tournee_infos.start_date', $second_plage)
->where('v_tournee_infos.type', $eTypeTournee);
})
->union($query_m->Where(function ($q) use ($first_plage, $eTypeTournee, $id_prestataire) {
$q->whereBetween('v_mission_infos.start_date', $first_plage)
->where('v_mission_infos.type', $eTypeTournee);
})
->orWhere(function ($q) use ($second_plage, $eTypeTournee, $id_prestataire) {
$q->orWhereBetween('v_mission_infos.start_date', $second_plage)
->where('v_mission_infos.type', $eTypeTournee);
}));
$dates[] = $now->clone()->format('Y-m-d 14:00:00');
$dates[] = $now->clone()->addDays(1)->format('Y-m-d 08:00:00');
} else {
$toMorrow = $now->clone()->addDay()->toDateString();
$query_builder = $query->whereDate('v_tournee_infos.start_date', $toMorrow)
->where('v_tournee_infos.type', $eTypeTournee)
->union($query_m->whereDate('v_mission_infos.start_date', $toMorrow)
->where('v_mission_infos.type', $eTypeTournee));
$a = $now->clone()->addDay();
$dates[] = $a->format('Y-m-d 08:00:00');
$dates[] = $a->format('Y-m-d 14:00:00');
}
$results = $query_builder->orderBy('start_date')->get()->groupBy('start_date')->toArray();
foreach ($dates as $d) {
if (!isset($results[$d])) {
$results[$d] = [];
}
}
ksort($results);
return $results;
}
Союз готов, но проблема в том, что мне предложили плохие времена.
Я действительно не знаю, откуда взялись опасения.
Если кто-то может помочь мне решить эту проблему, заранее спасибо