日期字段必须转换为 Eloquent 模型中的 'date'

Date field must cast to 'date' in Eloquent model

您好,我正在使用 laravel nova 创建管理面板。我正在尝试使用 日期字段 .

这是我的迁移,

$table->date('day')->nullable();

这是我的nova资源,

public function fields(Request $request)
    {
        return [
            ID::make()->sortable(),
            Date::make(__('Day'), 'day'),
        ];
    }

这是我的模型,

class Menu extends Model
{
    use HasTranslations;

    public $translatable = ['name','description'];

    protected $fillable = [
        'name','description','typology', 'cost', 'day', 'active', 'buffet'
    ];

这是我的错误,

Date field must cast to 'date' in Eloquent model.

我需要在资源中做些什么吗?

在您的模型 class 中,您只需添加以下行,这些行描述 laravel 您必须将日期字段转换为日期对象 (Carbon):

//Casts of the model dates
protected $casts = [
    'day' => 'date'
];

检查 here 有人有同样的问题。

编辑:

我看到你的 day 列设置为 nullable 我认为你的领域 Nova 应该喜欢这个 post :

public function fields(Request $request)
    {
        return [
            ID::make()->sortable(),
            Date::make(__('Day'), 'day')->nullable(),
        ];
    }

我们需要像这样更改模型,

protected $casts = ['day' => 'date'];