首页 > 解决方案 > Eloquent - 返回为 0000-00-00 的可空日期列

问题描述

我遇到了 Eloquent 模型的问题。我的数据库列定义为

date_to date null

它也被定义为nullable()在迁移中。

当我选择数据库记录时(使用查询生成器或直接通过find($id)),$model->date_toEloquent 始终将值返回为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;
}

标签: laraveleloquent

解决方案


protected $casts = [
    'date_from' => 'date:Y-m-d',
    'date_to' => 'date:Y-m-d',
];

你有没有尝试过像上面那样铸造


推荐阅读