Mysql 更改日期选择器格式并保存到laravel中的数据库

Mysql 更改日期选择器格式并保存到laravel中的数据库,mysql,laravel,jquery-ui-datepicker,Mysql,Laravel,Jquery Ui Datepicker,我有一个记录表,如下所示 id | name | request_day_leave | start_leave | end_leave 1 Michael 5 2019-04-01 2019-04-05 2 Johan 3 2019-04-08 2019-04-011 SQLSTATE[22007]: Invalid datetime format: 12

我有一个记录表,如下所示

    id |  name   | request_day_leave | start_leave | end_leave
     1   Michael            5          2019-04-01    2019-04-05
     2   Johan              3          2019-04-08    2019-04-011
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '08-04-2019' for column 'from_date' at row 1
我想更改刀片视图表单中的日期选择器显示,因此当用户单击日期时,它会显示dd-mm-yy。当用户看到日志报告时,它显示如下

     id |  name   | request_day_leave | Leave Start | Leave End
     1   Michael            5           01-04-2019    05-04-2019
     2   Johan              3           08-04-2019    11-04-2019
我已经在FormBlade视图中更改了datepicker格式,但当我需要将日期保存到数据库时,它会显示错误消息,如下所示

    id |  name   | request_day_leave | start_leave | end_leave
     1   Michael            5          2019-04-01    2019-04-05
     2   Johan              3          2019-04-08    2019-04-011
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '08-04-2019' for column 'from_date' at row 1
我尝试在模型中使用mutator,并在config/app.php中添加了一个新值,但仍然得到相同的错误消息

下面是配置/应用程序代码

'date_format' => 'd/m/Y',
'date_format_js' => 'dd/mm/yy' 
这是日期选择器代码

 $('#from').datepicker({
    showOnFocus: false,
    showTrigger: '#calImg',
    beforeShowDay: noWeekendsOrHolidays,
    numberOfMonths: 1,
    dateFormat: 'dd-mm-yy'
 });
    $('#to').datepicker({
        showOnFocus: false,
        showTrigger: '#calImg',
        beforeShowDay: noWeekendsOrHolidays,
        pickerClass: 'noPrevNext',
        numberOfMonths: 1,
        dateFormat: 'dd-mm-yy'
 });
});
下面是日志休假模型中的代码

class LogLeave extends Model
{
//
protected $table = 'log_leave';

public function setEntryDateAttribute($input)
{
    $this->attributes['start_leave'] = 
    Carbon::createFromFormat(config('app.date_format'), $input)->format('dd-mm-yy');
    $this->attributes['end_leave'] = 
    Carbon::createFromFormat(config('app.date_format'), $input)->format('dd-mm-yy');
}
}

如何解决这个问题

谢谢

我想再次强调,format()不是必需的

Carbon::createFromFormat('d/m/Y',$input);


在数据库中存储时,应将格式转换为yyyy-mm-dd

public function setEntryDateAttribute($input)
{
    $this->attributes['start_leave'] = 
    Carbon::createFromFormat(config('app.date_format'), $input)->format('Y-m-d');
    //should be format('Y-m-d') not format('dd-mm-yy')

    $this->attributes['end_leave'] = 
    Carbon::createFromFormat(config('app.date_format'), $input)->format('Y-m-d');
    //same applies here
}
然后使用访问器将值格式化为dd mm yyyy格式

public function getStartLeaveAttribute($value)
{
    return Carbon::parse($value)->format('d-m-Y');
}

public function getEndLeaveAttribute($value)
{
    return Carbon::parse($value)->format('d-m-Y');
}

您好,MySQL检索并以“YYYY-MM-DD”格式显示日期值,因此在插入数据库之前,请以所需的方式设置相同的格式。您好@SonamTripathi,是的,我想要的是当用户视图日志离开表单视图时,在开始日期和结束日期中以d-m-y格式显示,而不是基本数据库格式(y-m-d)是的,我理解您的担忧。您不需要在视图中更改格式,只要在PHP端提交表单后执行相同的操作即可。您好,是的,谢谢您的建议,我认为在数据库中,格式将是默认的,我所需要的是在视图中更改格式bladeI认为您以字符串形式获取输入,因此您可能会收到此错误$date=strottime($input);碳::createFromFormat(配置('app.date_format')、日期('d/m/Y',$date));