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

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

我想展示的是这个样子:

thinkphp 5.1 对数据库查出来的字段进行预处理_第1张图片

前端可以处理。

Think PHP的处理方式:

定义属性   :

$this->customize = '任意值';//这里的之没有作用
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 '';
    }

'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);
    }
}

你可能感兴趣的:(数据库,php)