更改日期选择器格式并保存到 laravel 中的数据库
Change datepicker format and save to database in laravel
我有一个 log_leave table 如下所示
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
我想更改在 blade 视图表单中显示的日期选择器,因此当用户单击日期时,它会显示 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
我已经更改了表单 blade 视图中的日期选择器格式,但是当我需要将日期保存到数据库时,它显示如下错误消息
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '08-04-2019' for column 'from_date' at row 1
我试过在模型中使用 mutator,并在 config/app.php 中添加了一个新值,但它仍然收到相同的错误消息
这是 config/app 代码
'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'
});
});
这是 Log Leave 模型中的代码
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);
或
Carbon::createFromFormat(config('app.date_format'), $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');
}
我有一个 log_leave table 如下所示
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
我想更改在 blade 视图表单中显示的日期选择器,因此当用户单击日期时,它会显示 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
我已经更改了表单 blade 视图中的日期选择器格式,但是当我需要将日期保存到数据库时,它显示如下错误消息
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '08-04-2019' for column 'from_date' at row 1
我试过在模型中使用 mutator,并在 config/app.php 中添加了一个新值,但它仍然收到相同的错误消息
这是 config/app 代码
'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'
});
});
这是 Log Leave 模型中的代码
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);
或
Carbon::createFromFormat(config('app.date_format'), $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');
}