我創建了 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 關注
- 124 瀏覽
添加回答
舉報
0/150
提交
取消