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**')
希望对您有所帮助
我有一个名为 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**')
希望对您有所帮助