我创建了 Excel 导入函数,它工作正常,直到我注意到日期没有正确插入,所以我尝试格式化日期,就像Y-m-d在 MySql 中正确存储一样,但 Carbon 给出了以下错误Carbon\Exceptions\InvalidFormatException发现意外数据。发现意外数据。追踪数据在Excel中我可能有d/m/Y或者Y/m/d所以我想在数据库中格式化为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'];}正确的方法是什么,还是我必须采用新的format方法dob
1 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
Carbon::createFromFormat($format, $time)
应该接收给定的格式$time
,而不是您想要转换成的格式。尝试将其更改为$format = 'd/m/Y'
,正如您所说,这是您期望从记录中获得的格式。
之后,您只需在 Carbon 对象上创建->toDateString()
或即可获取数据库格式。->toDateTimeString()
- 1 回答
- 0 关注
- 95 浏览
添加回答
举报
0/150
提交
取消