我在Eloquent模型中遇到了一个问题。我的数据库列定义为
date_to date null
在迁移中也定义为nullable()
。
当我选择一个数据库记录(无论是用查询生成器还是直接通过find($id)
),$model->date_to
的值总是由Eloquent返回为0000-00-00
(在MySQL中,这一列正确设置为NULL
)。
我错过了什么吗?我对雄辩没有经验。
这是我的模型:
<?php
use IlluminateDatabaseEloquentModel;
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;
}
protected $casts = [
'date_from' => 'date:Y-m-d',
'date_to' => 'date:Y-m-d',
];
你曾经试过像上面那样投射吗?