Laravel Carbon,如何格式化比较日期时间?
Laravel Carbon, How to format to compare datetime?
我正在开发一个预订应用程序,我从用户那里得到开始和结束(日期时间)并检查这个时间段(开始和结束)是否与数据库列(开始和结束)相交所以我需要比较Input['start']
和 Input['end']
与数据库,所以我使用 Carbon::create($inputstart)->between($start ,$end));
但它总是给出错误 "Unexpected data" & "Trailing data"
这是检查和存储输入的控制器方法
public function store(Request $request,$yard,$court)
{
$start =$request->input("start");
$end =$request->input("end");
$courtCalendar = CalendarEvent::where('court_id',$court)->get();
$start= Carbon::parse( $start);
$end = Carbon::parse($end);
foreach ($courtCalendar as $booked) {
$bend= Carbon::parse($booked->end);
$bstart= Carbon::parse($booked->start);
dd(Carbon::create($end)->between($bstart ,$bend));
if (!Carbon::create($start)->between($bstart ,$bend)){
if (!Carbon::create($end)->between($bstart ,$bend)) {
$calendar_event = new CalendarEvent();
$calendar_event->user_id = Auth::user()->id;
$calendar_event->court_id = $court;
$calendar_event->title = $request->input("title");
$calendar_event->start = $start;
$calendar_event->end = $end;
$calendar_event->status = 0;
$calendar_event->save();
return redirect()->back()
->with(['header'=>'Success!','class' =>'alert alert-success','message'=> 'booked successfully.',
'calendar'=>$calendar_event]);
}else
{return redirect()->back()
->with(['header'=>'Warning!','class' =>'alert alert-warning','message'=> 'cannot book at this time end time is occupied']);}
}else
{return redirect()->back()
->with(['header'=>'Warning!','class' =>'alert alert-warning','message'=> 'cannot book at this time start time is occupied']);}
}
}
我还将模型中的数据库列声明为日期
protected $dates = ['start', 'end'];
如何从 HTML 表单和数据库 "datetime" 传递日期时间格式,以便 Carbon 可以进行 "between" 比较?
看起来您已经使用行
为 $end 变量创建了 Carbon 实例
$end = Carbon::parse($end);
因此,如果您想确定 $end 是否在 $bstart 和 $bend 之间,那么您希望您的行看起来像这样
$end->between($bstart, $bend);
如果这不起作用,dd($end)
以及 dd($bstart)
和 dd($bend)
以确保它们都是 Carbon 对象。
我正在开发一个预订应用程序,我从用户那里得到开始和结束(日期时间)并检查这个时间段(开始和结束)是否与数据库列(开始和结束)相交所以我需要比较Input['start']
和 Input['end']
与数据库,所以我使用 Carbon::create($inputstart)->between($start ,$end));
但它总是给出错误 "Unexpected data" & "Trailing data"
这是检查和存储输入的控制器方法
public function store(Request $request,$yard,$court)
{
$start =$request->input("start");
$end =$request->input("end");
$courtCalendar = CalendarEvent::where('court_id',$court)->get();
$start= Carbon::parse( $start);
$end = Carbon::parse($end);
foreach ($courtCalendar as $booked) {
$bend= Carbon::parse($booked->end);
$bstart= Carbon::parse($booked->start);
dd(Carbon::create($end)->between($bstart ,$bend));
if (!Carbon::create($start)->between($bstart ,$bend)){
if (!Carbon::create($end)->between($bstart ,$bend)) {
$calendar_event = new CalendarEvent();
$calendar_event->user_id = Auth::user()->id;
$calendar_event->court_id = $court;
$calendar_event->title = $request->input("title");
$calendar_event->start = $start;
$calendar_event->end = $end;
$calendar_event->status = 0;
$calendar_event->save();
return redirect()->back()
->with(['header'=>'Success!','class' =>'alert alert-success','message'=> 'booked successfully.',
'calendar'=>$calendar_event]);
}else
{return redirect()->back()
->with(['header'=>'Warning!','class' =>'alert alert-warning','message'=> 'cannot book at this time end time is occupied']);}
}else
{return redirect()->back()
->with(['header'=>'Warning!','class' =>'alert alert-warning','message'=> 'cannot book at this time start time is occupied']);}
}
}
我还将模型中的数据库列声明为日期
protected $dates = ['start', 'end'];
如何从 HTML 表单和数据库 "datetime" 传递日期时间格式,以便 Carbon 可以进行 "between" 比较?
看起来您已经使用行
为 $end 变量创建了 Carbon 实例$end = Carbon::parse($end);
因此,如果您想确定 $end 是否在 $bstart 和 $bend 之间,那么您希望您的行看起来像这样
$end->between($bstart, $bend);
如果这不起作用,dd($end)
以及 dd($bstart)
和 dd($bend)
以确保它们都是 Carbon 对象。