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

时间:2018-09-18 12:29:31

标签: laravel laravel-5.6 laravel-nova

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

例如: attributes

我想在attributes : {'desc' : 'test', 'width' : '500'}列中显示各个属性(descwidth)作为Laravel管理资源中的html字段。

我检查了受支持的field types,但似乎不支持。

有人建议我该怎么做吗?

4 个答案:

答案 0 :(得分:6)

这就是我在Nova 2.0中能够完成此操作的方式。就我而言,我有一个名为 fields 的JSON列。在模型中, fields 强制转换为数组。

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

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

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

答案 1 :(得分:3)

我不确定这是否是建议的答案,但我已经找到了一种适合您的方法。

使用雄辩的变异者:Eloquent Mutators

然后,您定义一个getDescAttribute和一个setDescAttribute并将其像模型中的属性一样在nova中传递:

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

希望这会有所帮助。

答案 2 :(得分:0)

尝试 this 。 这是nova字段描述中唯一提到的“ JSON”。

答案 3 :(得分:0)

例如,“ desc”列的值类似于:

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

您可以直接将其放入表格格式:

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

希望这会有所帮助