【发布时间】:2021-09-21 08:18:41
【问题描述】:
我遇到了 Eloquent 模型的问题。我的数据库列定义为
date_to date null
迁移中也定义为nullable()。
当我选择一个数据库记录(使用查询生成器或直接通过find($id))时,Eloquent 始终将$model->date_to 的值返回为0000-00-00(在MySQL 中,此列正确设置为NULL) .
我错过了什么吗?我对 Eloquent 没有那么丰富的经验。
这是我的模型:
<?php
use Illuminate\Database\Eloquent\Model;
class MyModel extends Model
{
protected $table = 'table_name';
public $timestamps = false;
protected $fillable = [
'member_id',
'date_from',
'date_to',
];
protected $dates = [
'date_from',
'date_to',
];
}
表结构:
create or replace table table_name
(
id bigint unsigned auto_increment
primary key,
member_id int not null,
date_from date null,
date_to date null,
)
charset=utf8;
更新
作为我使用的临时修复:
public function getDateToAttribute($value)
{
if ($value == '0000-00-00') {
return null;
}
return $value;
}
public function getDateFromAttribute($value)
{
if ($value == '0000-00-00') {
return null;
}
return $value;
}
【问题讨论】:
-
你可能在Model的
protected $dates变量中添加了字段 -
@UrjaSatodiya 是的,我已将它添加到这个受保护的数组中。但一开始并没有设置在
$dates数组中,结果不幸的是一样。 -
能分享一下相关的eloquent模型吗?
-
@Sevan 我已经用模型定义更新了我的帖子
-
@mkrowiarz 你注意到那个日期字段的发布请求数据了吗?