Мне нужно получить 3 типа записей, чтобы отправить им напоминания: сначала мне нужно отправить напоминания через 24 часа после создания записей, затем через 48 часов и, наконец, через 72 часа.
Я сделал это до сих пор, но, похоже, он не работает должным образом, потому что предположим, что запись была создана в 2019-06-10 19:00:00
, когда текущий день превращается в 2019-07-10 00:01:00
, кажется, что считается, что уже прошло 24 часа:
$fecha_hoy = Carbon::now();
$solicitudes_24 = SolicitudUser::whereDate(DB::raw('DATE_ADD(created_at, INTERVAL 24 HOUR)'), '<', $fecha_hoy)
->whereDate(DB::raw('DATE_ADD(created_at, INTERVAL 48 HOUR)'), '>', $fecha_hoy)
->whereNull('recordatorio_estado')
->whereHas('curso', function($query){
$query->whereHas('operativo', function ($q){
$q->whereDate('dateOfertaAcademicaOperativoFechaRegistroFin', '>', Carbon::now());
});
})
->where(function($query){
$query->where('registro_completo', 0)
->orWhereNull('registro_completo');
})
->get();
$solicitudes_48 = SolicitudUser::whereDate(DB::raw('DATE_ADD(tblusersSolicitudes.created_at, INTERVAL 48 HOUR)'), '<', $fecha_hoy)
->whereDate(DB::raw('DATE_ADD(tblusersSolicitudes.created_at, INTERVAL 72 HOUR)'), '>', $fecha_hoy)
->where(function($query){
$query->where('recordatorio_estado', 1)
->orWhereNull('recordatorio_estado');
})
->whereHas('curso', function($query){
$query->whereHas('operativo', function ($q){
$q->whereDate('dateOfertaAcademicaOperativoFechaRegistroFin', '>', Carbon::now());
});
})
->where(function($query){
$query->where('registro_completo', 0)
->orWhereNull('registro_completo');
})
->get();
$solicitudes_72 = SolicitudUser::whereDate(DB::raw('DATE_ADD(tblusersSolicitudes.created_at, INTERVAL 72 HOUR)'), '<', $fecha_hoy)
->where(function($query){
$query->where('recordatorio_estado', 2)
->orWhereNull('recordatorio_estado');
})
->whereHas('curso', function($query){
$query->whereHas('operativo', function ($q){
$q->whereDate('dateOfertaAcademicaOperativoFechaRegistroFin', '>', Carbon::now());
});
})
->where(function($query){
$query->where('registro_completo', 0)
->orWhereNull('registro_completo');
})
->get();
Как мне решить эту проблему?
PD.Вы можете игнорировать остальную часть цепочки запросов, которая не включает даты.