我有一个json
列类型的数据库模型,名为attributes
。此列将包含模型的其他详细信息。
例如:attributes : {'desc' : 'test', 'width' : '500'}
.
我想在attributes
列中将单个属性(desc
和width
(显示为Laravel管理资源中的html字段。
我检查了支持的字段类型,但似乎不支持。
有什么建议我该怎么做?
以下是我在Nova 2.0中实现这一目标的方式。就我而言,我有一个名为字段的 JSON 列。在模型中,字段被强制转换为数组。
protected $casts = [
'fields' => 'array'
];
然后在资源中,使用 -> 运算符映射列。
Text::make('Name', 'fields->name')
我不确定这是否是推荐的答案,但我找到了一种应该适合您的方法。
使用雄辩突变器:雄辩突变器
然后你定义一个getDescAttribute
和一个setDescAttribute
,并在nova中传递它,就像模型上的属性一样,如下所示:
Text::make('Desc', 'desc')
希望这有帮助。
例如,"desc"列的值如下所示:
"{attributes : {'desc' : 'test', 'width' : '500'}}"
你可以直接把它放在表格格式:
KeyValue::make('Desc', 'desc**.attributes**')
希望这有帮助
有一个包可以让您实现您想要的目标,而无需对模型的行为进行任何不必要的更改。
https://github.com/64robots/nova-fields
这将允许您将 JSON 数组的每个键定义为可以修改的实际字段。