如何使用vuejs日期选择器在Laravel中更新之前格式化日期



我使用的是vuejs日期选择器和inertiajs,但当我尝试更新数据库时,我收到了错误:无效的日期时间格式:1292不正确的日期值:列"date_of_fornth"的"2021-07-09T12:54:00.000Z">

我尝试在控制器中格式化日期,但这并不能保存任何内容。我在这里错过了什么?

eidt.vue:

<datepicker v-model="form.date_of_birth" name="Date of birth" />
data() {
return {
form: this.$inertia.form({
_method: 'put',
date_of_birth: this.application.date_of_birth,
}),
}
},
methods: {
update() {
this.form.put(this.route('applications.update', this.application.id))
},
},

控制器/应用程序更新:

User::find($application->user_id)->update(Request::only(
['date_of_birth' => date('Y-m-d H:i:s', $application->user->date_of_birth)],
));

尝试使用以下方法:

User::find($application->user_id)
->update([
'date_of_birth' => Carbon::parse(request()->date_of_birth)->toDateTimeString()
]);

根据日期来自前端的方式,您需要将date_of_birth解析为数据库将接受的日期-时间字符串。

这可以通过使用上面的Carbon::parse($value)->toDateTimeString()方法来完成。

确保将Carbon导入控制器:

use CarbonCarbon

我们就是这样做的,对于表单中的每个日期选择器日期,我们都会在模型上设置一个设置器,例如

public function setDateOfBirthAttribute($value): void
{
$this->attributes['date_of_birth'] = $value ? Carbon::parse($value) : null;
}

相关内容

  • 没有找到相关文章

最新更新