码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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=>'已打款'

  • 相关阅读:
    1-EleasticSearch高可用集群核心原理
    跨域推荐(Cross-Domain Recommendation)的最新综述
    java获取时间相差多少天
    如何提升软件测试效率?本文为你揭示秘密
    FPGA工程师是否有必要转ASIC设计工程师?哪个前景好?
    软件实训-例会1
    软件测试功能测试全套常见面试题【开放性思维题】面试总结4-3
    回调函数举例
    循环结构:for循环,while循环,do-while,死循环
    React笔记——github案例(用到axios 和 pubsub)
  • 原文地址:https://blog.csdn.net/weixin_44052462/article/details/126499455
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号