对于转成 JSON 的字段获取时的疑问?
如果一个字段 field1
在提交之前是一个数组,存入数据库时,使用 setAttribute
转成 json
,但是有两个地方需要读取,一个是展示所有数据时(item_list),一个是单条数据修改时(items_edit),这两个地方的展示不一样,在 list
页面展示是,field1
是以字符串的形式展示的,而在 edit
页面展示时,field1
字段需要转成数组,这时使用 getAttribute
会遇到问题,这两个地方不统一,这种情况应该怎么处理呢?这个问题主要是在使用 laravel-admin
做后台是遇到的,field1
字段会对应多这个可以修改的子字段。field1
对应的编辑页面是这样
field
在数组库中是 json字段的话可以这样做,之后他就是一个数组。@Jourdon 这样设置之后显示的结果
但是,我先要的结果是直接显示数据库里的json
@xingxiaoli 再
json_encode
一下?一个字段可以有两个访问器,你可以使用访问器组装你需要的格式,例如
field1
字段实际使用的时候直接调用field就是了.
@xingxiaoli 我说得挺清楚的。数据库里
field
的类型要是 Josn。模型里设置字段protected $casts = 'field' => 'array', ];
,laravel 会自动维护,写入数据库就是 Josn格式,不需要你去json_encode
,setAttribute
和getAttribute
也可以去掉了。@Jourdon 别人说了有两个地方需要展示不同的数据形式,一个地方数组展示,一个地方展示字符串.
@kangfq 多种展示方法更不建议用
getAttribute
和setAttribute
了。@Jourdon 为什么呢
@kangfq 同问 @JokerLinly
@kangfq
@xingxiaoli 修改器就是每次访问都会改变。如果要用不同的数据格式那修改器的意义在哪?修改器修改一次,自己再改一次?
@Jourdon 同一个字段 可以定义两个访问器,例如数据库存的是
1
可以定义一个修改器让他显示是
,再定义一个修改器让他显示true
,不同的使用场景调用不同的修改器即可.@kangfq :joy: 用属性类型转换不好吗?
@Jourdon 属性类型转换也只能满足楼主的一种场景,而且转出来了任何地方读取都是那种类型.