使用 Laravel Carbon 将日期保存为 MySQL 格式

Save date to MySQL format by using Laravel Carbon

在使用 Carbon 保存到数据库之前尝试将 JQuery 日期选择器日期格式 'dd-mm-yy' 转换为 MySQL 日期格式 'YYYY-MM-DD'。

我尝试在插入数据之前使用 Carbon in store 方法,但还是不行,它将日期保存为“0000-00-00”。

HTML:

<input type="text" name="reg_date" id="regdate" value="{{ old('reg_date', date('d/m/Y')) }}">

JQuery:

<script>
  $(function(){
    $("#regdate").datepicker({
    dateFormat: 'dd-mm-yy',
    changeMonth: true,
    changeYear: true,
    showAnim: 'slideDown'
    });
});
</script>

控制器:

use Carbon\Carbon;

 public function store(Request $request)
    {
        $data = $request->validate([
            'reg_date' => 'required',
            'first_name' => 'required|alpha',
            'last_name' => 'required|alpha',
        ]);

        $object = new ModelName();
        $regdate = 'reg_date';
        $object->date = \Carbon::createFromFormat('d-m-Y', $regdate)->format('Y-m-d');

        ModelName::create($data); // create() method to insert data to database.
    }

日期应以 'YYYY-MM-DD' 格式保存到数据库。

PS: Data type is 'DATE'.

以今天的日期为例,dd-mm-yy 的 JQuery 日期选择器格式对我来说听起来像是 10-08-19.

但是在您的 Carbon 声明中,您使用的是 d-m-Y,它需要一个 4 位数的年份 10-08-2019

正在尝试将您的输入格式更改为 d-m-y 以说明 2 位数年份。

$object->date = \Carbon::createFromFormat('d-m-y', $regdate)->format('Y-m-d');

有关 PHP 日期格式的更多信息:
https://www.php.net/manual/en/function.date.php

编辑: 其他问题,以及根据评论所做的更改。

public function store(Request $request)
{
    $request->validate([
        'reg_date' => 'required',
    ]);

    // get the entire request as an array
    $data = $request->all();

    // correct the date format
    $data['reg_date'] = \Carbon::createFromFormat('d-m-y', $data['reg_date'])->format('Y-m-d');

    // create a new model
    $model = ModelName::create($data);
}

编辑 2: 按键处理多个日期。

$keys = ['reg_date','sell_date','purchase_date'];

foreach ($keys as $key) {
    $data[$key] = \Carbon::createFromFormat('d-m-y', $data[$key])->format('Y-m-d');
}