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

Json column - Date field must cast to 'date' in Eloquent model

我有一个 laravel nova 面板,如下所示。我正在尝试使用如下所示的日期字段:

new Panel('Suggestions', [
    Flexible::make('Suggestions')
        ->addLayout('Suggestions', 'suggestion', [
            Text::make('Title'),
            Textarea::make('Message'),
            Date::make('Date', 'date')
        ])
        ->button('Add Suggestion'),
]),
        

然而它显示这个错误:

{message: "Date field must cast to 'date' in Eloquent model.", exception: "Exception",…}
exception: "Exception"
file: "/var/www/html/vendor/laravel/nova/src/Fields/Date.php"
line: 41
message: "Date field must cast to 'date' in Eloquent model."

我在模型中有这样的演员表 属性:

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

你知道问题出在哪里吗?

我在数据库 table 上没有与模型相关的 date 字段。我只有一个 suggestions json 字段,其中有很多列,包括“date” column/key,可能就是这个问题。你知道在这种情况下如何解决这个问题吗?谢谢

将此添加到您的演员表而不是 'date' => 'date',这为我解决了问题。

protected $casts = [
        'flexible-content' => FlexibleCast::class
    ];

另一个选项是解析它并将其转换为 MomentJS 格式,它也可以正常工作:

DateTime::make('Date')
   ->format('DD/MM/YYYY HH:mm')
   ->resolveUsing(function ($value) {
           return $value;
   }),

来源:https://github.com/whitecube/nova-flexible-content/issues/171