Laravel:在保存到数据库之前将 m/d/Y 从 jQuery UI 日期选择器转换为 Y-m-d

Laravel: Converting m/d/Y to Y-m-d from jQuery UI Datepicker before saving to database

我正在尝试将日期从 jQuery UI 日期选择器保存到数据库。

我想在输入表单中选择日期时以 m/d/Y 格式显示日期。

当我尝试将其保存到数据库时,出现以下错误: SQLSTATE[22007]:日期时间格式无效:1292 日期值不正确

我遵循了很多解决方案,但它对我不起作用。

我已经仔细查看了这个 link,虽然我按照所有内容正确操作,但它仍然返回相同的错误。

控制器代码

    public function store(Request $request)
    {
        $user = Frontend::create($request->all());
    }

型号代码

class Frontend extends Model
{
    use HasFactory;

    protected $table = 'frontend';

    protected $fillable = ['date'];

    public function setDateAtttribute($date)
    {
        $this->attributes['date'] = Carbon::createFromFormat($date)->format('Y-m-d');
    }
}

配置>app.php

'date_format' => 'm/d/Y',
'date_format_javascript' => 'mm/dd/yy',

我是新手,如果有人能帮助我找到解决方案,那将是一个巨大的帮助。

您需要在 setDateAtttribute() 下更改 public function setDateAtttribute($date) { $this->attributes['date'] = Carbon::parse($date); }

你试过这个方法吗

$this->attributes['date'] = date("Y-m-d",strtotime($data));

嗯,首先,Carbons createFromFormat 方法有两个参数。 Carbon::createFromFormat($format, $time)

如果您在模型上定义 $dates 属性,例如:

class Frontend extends Model {

    protected $dates = [
        'date',
    ];
}

那你就不用担心格式化了,你只要传一个Carbon实例给 $date属性。 Eloquent 应该会自动以正确的格式保存。另外,当检索到任何记录时,您的 $date 也将是 Carbon 实例。

这是一个专门针对您的 js 代码的代码:

$('#datepicker').datepicker({ 
   dateFormat: 'Y-m-d',
});