laravel - Eloquent - 返回为 0000-00-00 的可空日期列
问题描述
我遇到了 Eloquent 模型的问题。我的数据库列定义为
date_to date null
它也被定义为nullable()
在迁移中。
当我选择数据库记录时(使用查询生成器或直接通过find($id)
),$model->date_to
Eloquent 始终将值返回为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;
}
解决方案
protected $casts = [
'date_from' => 'date:Y-m-d',
'date_to' => 'date:Y-m-d',
];
你有没有尝试过像上面那样铸造?
推荐阅读
- swift - UICollectionViewCell 阴影和圆角不起作用
- powerapps - 从 PowerApps 创建页面时的 OneNote 嵌套列表问题
- flutter - 检查表单条目是否为 10 的倍数
- graphics - 未解析的外部符号“类 Fl_Graphics_Driver * fl_graphics_driver”
- javascript - 如何在javascript中将文本输入变量添加到URL
- css - 我应该如何在我的项目中构建 sass 和 css
- python - 如何使用物理按钮在热敏打印机上打印内容?
- python - 通过字符串生成器的字符串时出现新字符串时最清晰和 Pythonic 的跟踪方式
- python - 长时间的文件进度
- javascript - 在浏览器中使用 Javascript 渲染文本流