使用 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');
}
在使用 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');
}