• Laravel模型层自动返回数据处理


    1. 自动转换数据格式

    例如,mysql表存的是json数据,但是查询出来的是要数组格式的

    最常见的是查询出来再循环处理

    这个可以用一个简单的方法解决,用model,在对应的model添加如下代码

    protected $casts = [
        'bank_info' => 'array',
    ];
    

    其中 bank_info是数据库字段,array是要转换的最终数据格式

    只要这几行代码就解决了,不需要再去循环操作

    2. 自动返回每条数据处理的结果

    例如,最常见的状态字段,每个数值代表什么

    你也可以用循环去处理解决

    其实模型层也提供了处理的方法

    (1)如果你要改变原本字段返回的结果,直接在模型层加以下方法就行了

    1. public function getStatusAttribute()
    2. {
    3. $status = $this->attributes['status'];
    4. if ($status == 0) {
    5. return '打款中';
    6. } elseif ($status == 1) {
    7. return '已打款';
    8. } elseif ($status == 2) {
    9. return '已拒绝';
    10. } elseif ($status == 3) {
    11. return '已取消';
    12. }
    13. }

    方法名称固定 get + 字段名称+ Attribute

    上面的最终返回结果是 原本的status=>1换成了status=>'已打款'

    (2)如果你想保留原字段,用新字段展示

    方法名称命名规则一样,把字段名称换成要展示的新字段名称,

    然后多一段代码,定义字段的名称

    protected $appends = [
        'status_text'
    ];

    总的代码如下

    1. protected $appends = [
    2. 'status_text'
    3. ];
    4. public function getStatusTextAttribute()
    5. {
    6. $status = $this->attributes['status'];
    7. if ($status == 0) {
    8. return '打款中';
    9. } elseif ($status == 1) {
    10. return '已打款';
    11. } elseif ($status == 2) {
    12. return '已拒绝';
    13. } elseif ($status == 3) {
    14. return '已取消';
    15. }
    16. }

     上面返回的结果保留原本的status=>1,新增一个字段 status_text=>'已打款'

  • 相关阅读:
    matlab导入txt数据
    01-Node-Express系统框架搭建(express-generator)
    卡西欧FX5800全线贯通万能正
    Liunx-03用户、组、权限管理
    Flink(六)【DataFrame 转换算子(下)】
    pojo层、dao层、service层、controller层的作用
    牛客网前端刷题(一)
    Greenplum-表的分布策略
    三相组合式过电压保护器试验
    30【BOM和浏览器环境概述】
  • 原文地址:https://blog.csdn.net/weixin_44052462/article/details/126499455