我通过失眠将数据发布到流明api并希望将数据发送到数据库,但我遇到无效的日期时间错误
我已经尝试将datetime转换为mysql格式,但我失败了,都使用Carbon,Casting和strtotime php函数,如下面的1.strtotime($ value); 2. Carbon :: createFromFormat('Y-m -d H:i:s',$ value); 3.像'parking_end_time'=>'datetime:Y-m-d H:i:s'一样投射日期,
$router->group(['prefix' => 'api', 'namespace' => 'API'], function
() use ($router) {
/* Check Ins */
$router->post('checkin', 'CheckInController@store');
/* Payment Status */
$router->get('payments/status', 'PaymentStatusController@index');
/* Vehicle Categories */
$router->get('vehicles/categories',
'VehicleCategoryController@index');
/* Parking Areas */
$router->get('parking/areas', 'ParkingAreaController@index');
/* Parking Types*/
$router->get('parking/types', 'ParkingTypeController@index');
/* Vehicles */
$router->get('vehicles', 'VehicleController@index');
$router->get('vehicles/{vehicleRegistrationNumber}',
'VehicleController@show');
});
// Above are the routes
// Mutator on my model
public function setParkingStartTimeAttribute($value)
{
$this->attributes['parking_start_time'] =
Carbon::createFromFormat($value);
}
// Action in Controller
public function store(Request $request)
{
$this->validateCheckInRequest($request);
$parkingStartTime = Carbon::createFromFormat('Y-m-d H:i:s',
$request->parking_start_time);
return response()->json($parkingStartTime); // for testing purposes when i return this it gives me the result below
$checkIn = CheckIn::create($request->all());
return new CheckInCollection($checkIn);
}
// Result given when i return the parking_start_time
{
"date": "-0001-11-30 21:27:00.000000",
"timezone_type": 3,
"timezone": "UTC"
}
我预计日期时间返回就像这个“0000-00-00 21:27:00”,但我看到这个“-0001-11-30 21:27:00.000000”
您只是在以下代码中返回碳实例:
$parkingStartTime = Carbon::createFromFormat('Y-m-d H:i:s', $request->parking_start_time);
如果要格式化,则需要应用toDateTimeString()
函数:
$parkingStartTime = Carbon::createFromFormat('Y-m-d H:i:s', $request->parking_start_time)->toDateTimeString();
此外,在你的mutator setParkingStartTimeAttribute
函数中,你只是调用createFromFormat
而你缺少格式作为第一个参数。
你需要更新:
public function setParkingStartTimeAttribute($value)
{
return Carbon::createFromFormat('Y-m-d H:i:s', $value);
}
并且由于您的mutator已经在进行格式化工作,您可以在控制器中再次消除格式化。
实际上我意识到错误是什么,错误不在代码中,它是关于mysql不允许在数据库中输入零日期,laravel和流明强制执行此规则,这就是为什么我得到那个错误,但一旦我从零改变了日期它工作得很好。
一些参考文献在这些网址上
https://www.percona.com/blog/2016/10/18/upgrading-to-mysql-5-7-beware-of-the-new-strict-mode/
Error in mysql when setting default value for DATE or DATETIME