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 将多行保存到数据库中