我需要获取 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();
我该如何解决这个问题?
个人资料。您可以忽略不涉及日期的其余查询链。
最佳答案
可能是因为你使用了whereDate。 whereDate 方法可用于将列的值与日期进行比较。 引用:https://laravel.com/docs/5.8/queries -> 哪里日期。 我认为你应该只使用 where 而不是 whereDate。这将为您提供当前输出。
关于php - 错误地将小时添加到 MySQL 表列时间戳 Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56537056/