我一直有一个问题在我的支票......如果摩托车是在revision
上06/09/2019
到11/09/2019
了摩托车000001
。
在我的表格中Training
,我可以添加相同的摩托车07/09/2019
通常是不可能的
我有这个:
$conflictTraining = Training::where('fk_motorbike', $fk_motorbike)
->whereDate('date_seance', "=" , $date_start)
->where('hour_start', "<=" , $request->get('hour_start'))
->where('hour_end', ">=" , $request->get('hour_end'))
->where('fk_former', $request->get('fk_former'))
->first();
$conflictRevision = Revision::where('fk_motorbike', $fk_motorbike)
->whereDate('date_revision_start', "<=" , $date_start)
->whereDate('date_revision_end', ">=", $date_start)
->where('hour_start', "<=" , $request->get('hour_start'))
->where('hour_end', ">=" , $request->get('hour_end'))
->first();
$conflictFormer = Training::where('fk_former', $fk_former)
->whereDate('date_seance', "=" , $date_start)
->where('hour_start', "<=" , $request->get('hour_start'))
->where('hour_end', ">=" , $request->get('hour_end'))
->first();
$conflictMotorbike = Training::where('fk_motorbike', $fk_motorbike)
->whereDate('date_seance', "=" , $date_start)
->where('hour_start', "<=" , $request->get('hour_start'))
->where('hour_end', ">=" , $request->get('hour_end'))
->first();
if(isset($conflictTraining)){
return redirect()->route('trainings.index')
->with('error', 'Duplicate ! ');
}
if(isset($conflictRevision)){
return redirect()->route('trainings.index')
->with('error', 'The motorbike is in revision! ');
}
if(isset($conflictFormer)){
return redirect()->route('trainings.index')
->with('error', 'Duplicate former ! ');
}
if(isset($conflictMotorbike)){
return redirect()->route('trainings.index')
->with('error', 'Duplicate motorbik ! ');
}
请问你有什么想法吗?
谢谢您的帮助
问题是您正在查询Revision模型并检查时间是否在 10:00 可用。它是 - 修订直到 12:00 才开始。修订版的时间检查限制了查询 - 您只检查 12:00 和 16:00 之间是否存在冲突,而不管日期是什么。IE 因为它在时间 (10:00 !== 12:00) 上查询失败,它无法获得匹配项,因此没有$conflictRevision
.
对于快速修复演示,删除查询中的时间检查:它现在应该显示重复/冲突:
$conflictRevision = Revision::where('fk_motorbike', $fk_motorbike)
->whereDate('date_revision_start', "<=" , $date_start)
->whereDate('date_revision_end', ">=", $date_start)
->first();
您遇到了一些逻辑问题。由于您的修订可能持续几天,而不仅仅是一天,您如何确定冲突时间是否与用户想要安排培训的同一天?如果修订可以停机超过一天,则添加修订时间没有任何意义。我们说的是哪一天在 12:00 到 16:00 之间下跌?
我建议您从修订中删除时间 - 如果我们不知道特定修订时间是哪一天,那么从逻辑的角度来看,尝试与时间进行比较是没有意义的。
一个例外是,如果您说修订在每天 12:00 至 16:00 期间关闭。如果这是某种类型的时间表,其中自行车仅在 12:00 进入,并且每天可用到 12:00,那么修订中的时间是可靠的逻辑,但这意味着您的问题中的查询是允许培训......是正确的(那天自行车正在修改,但直到 12:00)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句