变量的碳分配未通过
Carbon Assignment to Variable not Passed
我在一个视图中设置了两个日期选择器;一个用于开始日期,一个用于结束日期。
请求被传递到控制器索引方法,它与此 if
块交互。
如果我设置开始日期,例如1st of April
,我预计:
$start_date == 2017-04-01 00:00:00
$end_date == 2017-04-08 00:00:00
(一周后)
但是当我运行一个dd($start_time.' '.$end_time)
块后,它returns
2017-04-08 00:00:00 2017-04-08 00:00:00
// If start or end date is not passed, set the bookings to view the upcoming week
if (isset($request->start_date) && isset($request->end_date))
{
$start_date = Carbon::parse($request->start_date);
$end_date = Carbon::parse($request->end_date);
if ($start_date->diffInDays($end_date, false) < 1 )
{
return redirect()->route('bookings.index')->with('errors', 'Please choose an end date <strong>after</strong> start date!');
}
}
else if (isset($request->start_date))
{
$start_date = Carbon::parse($request->start_date);
$end_date = $start_date->addWeek();
}
else if (isset($request->end_date))
{
$end_date = Carbon::parse($request->end_date);
$start_date = ($end_date->subWeek());
}
else
{
$start_date = Carbon::now();
$end_date = Carbon::now()->addweek();
}
这里可能发生了什么?
您的代码出现问题是因为 Carbon 对象是可变的。
这基本上意味着当您执行 $end_date = $start_date->addWeek();
时,start_date
和 end_date
都是相同的对象。
所以你可以 clone
start_date
到 end_date
然后调用它的方法。
解应该是
// If start or end date is not passed, set the bookings to view the upcoming week
if (isset($request->start_date) && isset($request->end_date))
{
$start_date = Carbon::parse($request->start_date);
$end_date = Carbon::parse($request->end_date);
if ($start_date->diffInDays($end_date, false) < 1 )
{
return redirect()->route('bookings.index')->with('errors', 'Please choose an end date <strong>after</strong> start date!');
}
}
else if (isset($request->start_date))
{
$start_date = Carbon::parse($request->start_date);
$end_date = clone $start_date;
$end_date = $end_date->addWeek();
}
else if (isset($request->end_date))
{
$end_date = Carbon::parse($request->end_date);
$start_date= clone $end_date;
$start_date= $start_date->subWeek();
}
else
{
$start_date = Carbon::now();
$end_date = Carbon::now()->addweek();
}
我在一个视图中设置了两个日期选择器;一个用于开始日期,一个用于结束日期。
请求被传递到控制器索引方法,它与此 if
块交互。
如果我设置开始日期,例如1st of April
,我预计:
$start_date == 2017-04-01 00:00:00
$end_date == 2017-04-08 00:00:00
(一周后)
但是当我运行一个dd($start_time.' '.$end_time)
块后,它returns
2017-04-08 00:00:00 2017-04-08 00:00:00
// If start or end date is not passed, set the bookings to view the upcoming week
if (isset($request->start_date) && isset($request->end_date))
{
$start_date = Carbon::parse($request->start_date);
$end_date = Carbon::parse($request->end_date);
if ($start_date->diffInDays($end_date, false) < 1 )
{
return redirect()->route('bookings.index')->with('errors', 'Please choose an end date <strong>after</strong> start date!');
}
}
else if (isset($request->start_date))
{
$start_date = Carbon::parse($request->start_date);
$end_date = $start_date->addWeek();
}
else if (isset($request->end_date))
{
$end_date = Carbon::parse($request->end_date);
$start_date = ($end_date->subWeek());
}
else
{
$start_date = Carbon::now();
$end_date = Carbon::now()->addweek();
}
这里可能发生了什么?
您的代码出现问题是因为 Carbon 对象是可变的。
这基本上意味着当您执行 $end_date = $start_date->addWeek();
时,start_date
和 end_date
都是相同的对象。
所以你可以 clone
start_date
到 end_date
然后调用它的方法。
解应该是
// If start or end date is not passed, set the bookings to view the upcoming week
if (isset($request->start_date) && isset($request->end_date))
{
$start_date = Carbon::parse($request->start_date);
$end_date = Carbon::parse($request->end_date);
if ($start_date->diffInDays($end_date, false) < 1 )
{
return redirect()->route('bookings.index')->with('errors', 'Please choose an end date <strong>after</strong> start date!');
}
}
else if (isset($request->start_date))
{
$start_date = Carbon::parse($request->start_date);
$end_date = clone $start_date;
$end_date = $end_date->addWeek();
}
else if (isset($request->end_date))
{
$end_date = Carbon::parse($request->end_date);
$start_date= clone $end_date;
$start_date= $start_date->subWeek();
}
else
{
$start_date = Carbon::now();
$end_date = Carbon::now()->addweek();
}