当前位置: 首页 > article >正文

thinkphp 5.1 对数据库查出来的字段进行预处理

比如数据库的设计是下面这样子:

我想展示的是这个样子:

前端可以处理。

Think PHP的处理方式:

定义属性   :

$this->customize = '任意值';//这里的之没有作用
<?php

namespace app\hs\controller\shop;

use app\daogou\model\Goods;
use app\hs\controller\Common;
use app\hs\traits\Curd;
use think\App;

class Lists extends Common
{
    use Curd;
    public function __construct(App $app = null)
    {
        parent::__construct($app);
        $this->model = new Goods();
        $this->alias = 'good';
        $this->join = ['user', 'user.id = good.user_id'];
        $this->field = 'good.*,username';
        $this->customize = 'status_txt';

//        $good = $this->model->find();
//        dump($good);
//        $good->status_txt = '1112312';
//        dump($good);
//        dump($good->getData("price"));
//        die;
    }
}

在model 中定义 getXxxxAttr(){}  查询数据库会调用这个函数。对查出来的数据进行预处理

   public function getStatusTxtAttr($v,$data)
    {
        //状态(-1:下架,1:上架,2:交易中)
        $status = [-1=>"下架",1=>"上架",2=>"交易中"];
        if(array_key_exists('status',$data)){
            return array_key_exists($data['status'],$status) ? $status[$data['status']] : $data['status'];
        }
        return '';
    }

<?php

namespace app\daogou\model;

use app\common\model\TimeModel;

class Goods extends TimeModel
{
    protected $table = 'dg_goods';

    protected $type = [
        'type_params'=>'json',
    ];



    //type_params:
    //      type = 1 : [['coin_id'=>1,'award'=>"0.80000000"],……]
    //      type = 2 : ['max_number'=>10,'winner'=>1]
    //      type = 3 : null

    public function user()
    {
        return $this->hasOne('user','user_id','id')->bind(['username']);
    }

    public function getStatusTxtAttr($v,$data)
    {
        //状态(-1:下架,1:上架,2:交易中)
        $status = [-1=>"下架",1=>"上架",2=>"交易中"];
        if(array_key_exists('status',$data)){
            return array_key_exists($data['status'],$status) ? $status[$data['status']] : $data['status'];
        }
        return '';
    }


    public function getPriceAttr($v)
    {
        return delZero($v);
    }
}


http://www.kler.cn/a/159234.html

相关文章:

  • 【Apache Paimon】-- 1 -- Apache Paimon 是什么?
  • 重置docker版本的octoprint管理员账号密码
  • WebChromeClient 方法分类及其功能
  • ADS学习笔记 5. 微带天线设计
  • 无人机检测车辆——多目标检测
  • Spring Batch :高效处理海量数据的利器
  • Chapter 6 Managing Application Engine Programs 管理应用程序引擎程序
  • CSS面经(未完待续)
  • 十六进制的奥秘:理解计算机中的十六进制数
  • Data Linked UI
  • php+redis抢购商品高并发实现
  • VSCode 创建工作区,多文件夹终端切换
  • Java面试题(每天10题)-------连载(44)
  • 什么都不缺的我还需要一张结婚证吗?
  • AP01B2YP、AP2B2YP、AP04G2YP插装式比例控制阀放大器
  • VS2019shi用动态链接库
  • Linux服务器部署XXL-JOB
  • SQL Sever 基础知识 - 数据筛选(1)
  • 数学建模-基于机器学习的家政行业整体素质提升因素分析
  • Unity - yield return相关用法
  • WTR096A-16S语音芯片IC:丰富的IO口实现个性化定制功能需求
  • Qt 中的窗口类
  • 毕业论文及各种办公文件word页码的设置大全
  • 智能井盖倾斜预防方案,井盖监测方式推荐
  • 【鸿蒙应用ArkTS开发系列】-自定义底部菜单列表弹窗
  • 公有云迁移研究——AWS Translate