Laravel:在保存到数据库之前从 jQuery UI Datepicker 将 m/d/Y 转换为 Y-m-d

Posted

技术标签:

【中文标题】Laravel:在保存到数据库之前从 jQuery UI Datepicker 将 m/d/Y 转换为 Y-m-d【英文标题】:Laravel: Converting m/d/Y to Y-m-d from jQuery UI Datepicker before saving to database 【发布时间】:2021-04-14 04:10:09 【问题描述】:

我正在尝试将 jQuery UI datepicker 中的日期保存到数据库。

我想在输入表单中选择日期时以 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');
    

config>app.php

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

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

【问题讨论】:

【参考方案1】:

你试过这个方法吗

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

【讨论】:

【参考方案2】:

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

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

class Frontend extends Model 

    protected $dates = [
        'date',
    ];

然后你不必担心格式化,你只需将 Carbon 实例传递给 $date 财产。 Eloquent 应该会自动以正确的格式保存。另外,当检索到任何记录时,您的 $date 也将是 Carbon 实例。

【讨论】:

非常感谢!它使用您的解决方案与 Malik Waqas 提供的解决方案结合使用。【参考方案3】:

这是一个特定于您的 js 代码的代码:

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

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于Laravel:在保存到数据库之前从 jQuery UI Datepicker 将 m/d/Y 转换为 Y-m-d的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel 4+ 从 jQuery/ajax 保存序列化的可排序数据

使用动态输入字段/laravel 和 jQuery 将多行保存到数据库中

Laravel 中的 Ajax Jquery 未将值保存到数据库

jQuery 在附加到 DOM 之前从元素中生成变量

使用ajax jquery的laravel消息闪烁

PHP如何使用laravel 5将数据从数组保存到mysql