如何修复'无效的日期时间;流明误差

问题描述 投票:0回答:2

我通过失眠将数据发布到流明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”

laravel lumen
2个回答
0
投票

您只是在以下代码中返回碳实例:

$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已经在进行格式化工作,您可以在控制器中再次消除格式化。


0
投票

实际上我意识到错误是什么,错误不在代码中,它是关于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

© www.soinside.com 2019 - 2024. All rights reserved.