发现意外数据。发现意外数据。尾随数据
Unexpected data found. Unexpected data found. Trailing data
我创建了 excel 导入函数,它工作正常,直到我注意到日期没有正确插入,所以我尝试将日期格式化为 Y-m-d
以正确存储在 MySql , 但碳给出了以下错误
Carbon\Exceptions\InvalidFormatException
Unexpected data found. Unexpected data found. Trailing data
在 excel 中我可能有 d/m/Y
或 Y/m/d
所以我想在 DB
中格式化为 tored
我的导入码
public function model(array $row)
{
return new Staff([
'employee_no' => $row['id'],
'name' => $row['name'],
'address' => $row['address'],
'fathers_name' => $row['father'],
'dob' => $this->transformDate($row['dob']),
'blood_group' => $row['blood_group'],
'phone' => $row['phone'],
'password' => Hash::make($row['id']),
]);
}
public function transformDate($value, $format = 'Y-m-d')
{
try {
return \Carbon\Carbon::instance(\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($value));
} catch (\ErrorException $e) {
return \Carbon\Carbon::createFromFormat($format, $value);
}
}
我的员工模型
class Staff extends Authenticatable
{
protected $fillable = [
'name', 'employee_no', 'designation_id', 'fathers_name', 'dob', 'identification_mark', 'blood_group', 'phone', 'address', 'height', 'rfid_no', 'building_id', 'password',
];
protected $casts = ['dob'];
}
什么是正确的方法,或者我必须为 dob
接近新的 format
Carbon::createFromFormat($format, $time)
应该接收给定 $time
的格式,而不是您要转换成的格式。尝试将其更改为 $format = 'd/m/Y'
,正如您所说的那样,这是您希望从记录中获得的格式。
之后,您只需在 Carbon 对象上设置 ->toDateString()
或 ->toDateTimeString()
即可获得数据库格式。
另请参阅:
我创建了 excel 导入函数,它工作正常,直到我注意到日期没有正确插入,所以我尝试将日期格式化为 Y-m-d
以正确存储在 MySql , 但碳给出了以下错误
Carbon\Exceptions\InvalidFormatException
Unexpected data found. Unexpected data found. Trailing data
在 excel 中我可能有 d/m/Y
或 Y/m/d
所以我想在 DB
我的导入码
public function model(array $row)
{
return new Staff([
'employee_no' => $row['id'],
'name' => $row['name'],
'address' => $row['address'],
'fathers_name' => $row['father'],
'dob' => $this->transformDate($row['dob']),
'blood_group' => $row['blood_group'],
'phone' => $row['phone'],
'password' => Hash::make($row['id']),
]);
}
public function transformDate($value, $format = 'Y-m-d')
{
try {
return \Carbon\Carbon::instance(\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($value));
} catch (\ErrorException $e) {
return \Carbon\Carbon::createFromFormat($format, $value);
}
}
我的员工模型
class Staff extends Authenticatable
{
protected $fillable = [
'name', 'employee_no', 'designation_id', 'fathers_name', 'dob', 'identification_mark', 'blood_group', 'phone', 'address', 'height', 'rfid_no', 'building_id', 'password',
];
protected $casts = ['dob'];
}
什么是正确的方法,或者我必须为 dob
format
Carbon::createFromFormat($format, $time)
应该接收给定 $time
的格式,而不是您要转换成的格式。尝试将其更改为 $format = 'd/m/Y'
,正如您所说的那样,这是您希望从记录中获得的格式。
之后,您只需在 Carbon 对象上设置 ->toDateString()
或 ->toDateTimeString()
即可获得数据库格式。
另请参阅: