tp5获取器定义数据表中不存在的字段

thinkphp5获取器原始数据和自定义字段同时显示的方法

根据官方文档:

获取器的作用是在获取数据的字段值后自动进行处理,例如,我们需要对状态值进行转换,可以使用:

class User extends Model 
{
    public function getStatusAttr($value)
    {
        $status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核'];
        return $status[$value];
    }
}

数据表的字段会自动转换为驼峰法,一般 status 字段的值采用数值类型,我们可以通过获取器定义,自动转换为字符串描述。

这个时候通过 model 查询出来的数据就变成了转换后的字段,但是原始数据就不显示了,那么需要原始数据该怎么办呢?

同时显示原始数据和自定义字段

在 model 中加入获取方法

//0未确认,1已取消,2已关闭,3确认收货,4部分分单,5已分单,6交易完成
public function getOrderStatusTextAttr($value){
    $status = [0=>'未确认',1=>'已取消',2=>'已关闭',3=>'确认收货',4=>'部分分单',5=>'已分单'];
    return $status[$value];
}

然后在查询语句的时候:

$model = new Order;
$model->Field('order_id,order_status,order_status as order_status_text');

查询结果 json 格式

{
    "code": 0,
    "data": [
        {
            "order_status": "5",
            "order_status_text": "确认收货",
        }
    ]
}

OK。

要注意的是:

如果你的 key 不存在,可能会报 未定义数组下标: 5 的错误哦!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值