Laravel - 将日期发布为 JSON 并保存为 MySQL 中的 DATE 约束
Posted
技术标签:
【中文标题】Laravel - 将日期发布为 JSON 并保存为 MySQL 中的 DATE 约束【英文标题】:Laravel - POST date as JSON and save as DATE Constraint in MySQL 【发布时间】:2021-10-18 12:24:46 【问题描述】:问题陈述:
我在 mysql Column DataType Constraint 数据库中定义了DATE
格式。
但是,在使用 Laravel Mass Assignment 和 all input data 的 MySQL 约束中以 ISO
格式发送 JSON 对象中的日期时,它必须是 DATE
DataType
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '1990-01-01T00:00:00.000Z' for column 'date_of_birth' at row 1
文件和配置:
刀片文件
<input type="date" id="date_of_birth">
<script>
var dob = new Date( $("#date_of_birth").val() ).toISOString();
</script>
发布 JSON 对象
date_of_birth: "1990-01-01T00:00:00.000Z"
批量分配的设置属性
App\Models\User.php
protected $fillable = [ 'date_of_birth' ]
App\Http\Controllers\UpdateController.php
public function update(Request $request, User $user)
$id = $user->updateOrCreate($request->all());
【问题讨论】:
无效的日期时间格式,那么,您在那里定义了什么日期格式?在日期列 date_of_birth 的数据库中。 我在数据库中定义了DATE
格式。
这不是日期格式。这是一种数据类型。
你应该使用一个 mutator (laravel.com/docs/5.7/eloquent-mutators#defining-a-mutator)。
阅读this,不要将datetype与date format混为一谈。
【参考方案1】:
我想感谢@Armagen。使用mutator。
use Carbon\Carbon;
class User extends Model
/**
* Set the user's date_of_birth.
*
* @param string $value
* @return void
*/
public function setDateOfBirthAttribute($value)
$this->attributes['date_of_birth'] = Carbon::parse($value);
【讨论】:
以上是关于Laravel - 将日期发布为 JSON 并保存为 MySQL 中的 DATE 约束的主要内容,如果未能解决你的问题,请参考以下文章
Laravel - 从 JSON 数组创建对象以将其保存在 SQL 数据库中
将日期与laravel中mysql json数组的每个值进行比较
Laravel:在保存到数据库之前从 jQuery UI Datepicker 将 m/d/Y 转换为 Y-m-d