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

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

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

l03
每天进步一点点
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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年前 评论

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