Laravel Nova - 将数据库 json 列映射到字段

Laravel Nova - Map database json column to field

我有一个名为 attributes 的具有 json 列类型的数据库模型。此列将包含模型的其他详细信息。

例如: attributes : {'desc' : 'test', 'width' : '500'}.

我想在 attributes 列中显示单个属性 (desc & width) 作为 Laravel 管理资源中的 html 字段。

我检查支持field types但似乎不支持。

有什么建议吗?

我不确定这是否是推荐的答案,但我找到了适合您的方法。

使用 Eloquent 突变器:Eloquent Mutators

然后你定义一个 getDescAttribute 和一个 setDescAttribute 并在 nova 中像 属性 一样在模型上传递它,如下所示:

Text::make('Desc', 'desc')

希望对您有所帮助。

以下是我如何在 Nova 2.0 中完成此操作。在我的例子中,我有一个名为 fields 的 JSON 列。在模型中,fields 被转换为数组。

protected $casts = [
    'fields' => 'array'
];

然后在资源中,使用 -> 运算符映射列。

Text::make('Name', 'fields->name')

例如,'desc' 列的值类似于:

"{attributes : {'desc' : 'test', 'width' : '500'}}"

可以直接写成table格式:

KeyValue::make('Desc', 'desc**.attributes**')

希望对您有所帮助