Laravel / Livewire - 日期推迟一天
Laravel / Livewire - Date is off by one day
我不确定这是从哪里来的,但默认的 HTML
日期选择器在使用 laravel
和 livewire
.
时关闭了一天
此代码:
<div class="col-span-6 sm:col-span-4">
<x-jet-label for="birthdate" value="{{ __('Geburtsdatum') }}" />
<x-jet-input id="birthdate" name="birthdate" type="date" class="mt-1 mb-6 w-full" wire:model="details.birthdate"/>
<x-jet-input-error for="details.birthdate" class="mt-2" />
{{$details->birthdate}}
</div>
结果是这样的:
我使用此代码确保模型中的生日格式符合我的预期:
protected $casts = [
'birthdate' => 'date:Y-m-d',
];
与我的 livewire 组件中的验证规则相同:
protected $rules = [
'details.birthdate' => 'date:Y-m-d',
];
我也在我的 mysql
数据库中使用 date
格式。
并且该值似乎与 2021-02-02
一样正确,但使用 wire:model
插入它最终会变成 2021-02-01
.
有人知道这种行为从何而来吗?
我们终于找到了导致问题的原因。我们在 model
:
中有一个受保护的变量
protected $dates = ['birthdate'];
删除这个之后,如果终于成功了。感谢您的帮助。
我不确定这是从哪里来的,但默认的 HTML
日期选择器在使用 laravel
和 livewire
.
此代码:
<div class="col-span-6 sm:col-span-4">
<x-jet-label for="birthdate" value="{{ __('Geburtsdatum') }}" />
<x-jet-input id="birthdate" name="birthdate" type="date" class="mt-1 mb-6 w-full" wire:model="details.birthdate"/>
<x-jet-input-error for="details.birthdate" class="mt-2" />
{{$details->birthdate}}
</div>
结果是这样的:
我使用此代码确保模型中的生日格式符合我的预期:
protected $casts = [
'birthdate' => 'date:Y-m-d',
];
与我的 livewire 组件中的验证规则相同:
protected $rules = [
'details.birthdate' => 'date:Y-m-d',
];
我也在我的 mysql
数据库中使用 date
格式。
并且该值似乎与 2021-02-02
一样正确,但使用 wire:model
插入它最终会变成 2021-02-01
.
有人知道这种行为从何而来吗?
我们终于找到了导致问题的原因。我们在 model
:
protected $dates = ['birthdate'];
删除这个之后,如果终于成功了。感谢您的帮助。