对于转成 JSON 的字段获取时的疑问?

如果一个字段 field1 在提交之前是一个数组,存入数据库时,使用 setAttribute 转成 json,但是有两个地方需要读取,一个是展示所有数据时(item_list),一个是单条数据修改时(items_edit),这两个地方的展示不一样,在 list 页面展示是,field1 是以字符串的形式展示的,而在 edit 页面展示时,field1 字段需要转成数组,这时使用 getAttribute 会遇到问题,这两个地方不统一,这种情况应该怎么处理呢?这个问题主要是在使用 laravel-admin 做后台是遇到的,field1 字段会对应多这个可以修改的子字段。
对于转成JSON的字段获取时的疑问?
field1 对应的编辑页面是这样

对于转成JSON的字段获取时的疑问?

l03
每天进步一点点
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 13
Jourdon

field 在数组库中是 json字段的话可以这样做,之后他就是一个数组。

protected $casts = [
        'field'   => 'array',
    ];
4年前 评论

@Jourdon 这样设置之后显示的结果

file
但是,我先要的结果是直接显示数据库里的json

file

4年前 评论
Epona

@xingxiaolijson_encode一下?

4年前 评论

一个字段可以有两个访问器,你可以使用访问器组装你需要的格式,例如field1字段

public function getFieldAttribute($value)
    {
        return $this->field1 + 1;
    }

实际使用的时候直接调用field就是了.

4年前 评论
Jourdon

@xingxiaoli 我说得挺清楚的。数据库里field的类型要是 Josn。模型里设置字段 protected $casts = 'field' => 'array', ];,laravel 会自动维护,写入数据库就是 Josn格式,不需要你去 json_encodesetAttributegetAttribute也可以去掉了。

4年前 评论

@Jourdon 别人说了有两个地方需要展示不同的数据形式,一个地方数组展示,一个地方展示字符串.

4年前 评论
Jourdon

@kangfq 多种展示方法更不建议用 getAttributesetAttribute 了。

4年前 评论

@Jourdon 为什么呢

4年前 评论
Jourdon

@kangfq
@xingxiaoli 修改器就是每次访问都会改变。如果要用不同的数据格式那修改器的意义在哪?修改器修改一次,自己再改一次?

4年前 评论

@Jourdon 同一个字段 可以定义两个访问器,例如数据库存的是1 可以定义一个修改器让他显示,再定义一个修改器让他显示true,不同的使用场景调用不同的修改器即可.

4年前 评论
Jourdon

@kangfq :joy: 用属性类型转换不好吗?

4年前 评论

@Jourdon 属性类型转换也只能满足楼主的一种场景,而且转出来了任何地方读取都是那种类型.

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!