thinkphp5第29课:模型-获取器

1、获取器

获取器的作用是在获取数据的字段值后自动进行处理

有一个学生表,字段stustus为Int类型,1 = 正常,0 = 冻结;createtime表示创建时间,使用时间戳存储日期

这样做的目的:整形的查询速度比字符串要高得多,能提高查询速度。项目中经常这样使用

但是当在页面上显示学生信息时,不能显示0或者1,而是应用显示“正常”或“冻结”;创建时间显示正常的时间,如:2019-11-9

2、定义模型

<?php
namespace app\index\model;
use think\Model;

//数据表student的模型类
class Student extends Model
{
    //自定义表名
    protected $table = "my_student";
    
    //status字段的获取器
    protected function getStatusAttr($value)
    {
        $data = [0=>'冻结',1=>'正常'];
        return $data[$value];
    }

    //createtime的获取器
    protected function getCreatetimeAttr($value)
    {
        return date('Y-m-d',$value);
    }
}

3、 使用模型

 public function index()
    {
        //实例化学生模型
        $stu = new Student();
        //返回多条数据,数据格式:二维数组,每个元素是一个模型对象
        $data = $stu->order('no')->select();

        $arr = [];
        foreach ($data as $row){
            //将模型对象转换成数组
            $arr[] = $row->toArray();
        }
        print_r($arr);
    }

输出的数据为:

认真查看上面的输出结果,就会发现status字段和createtime字段,显示的数据与数据表中的数据不一样,它经过了读取器的处理。

使用模型获取单条记录,代码如下:

 public function getstudent($no)
    {
        $stu = new Student();
        $data = $stu->where('no',$no)->find();
        print_r($data);
    }

输出结果哪下:

通过上面的输出结果来看,使用find()方法,得到并不是一维数组,而是一个对象,所以还要后 续的处理

public function getstudent($no)
    {
        $stu = new Student();
        $data = $stu->where('no',$no)->find();
        //将对象转换成数组
        $data = $data->toArray();
        print_r($data);
    }

输出结果变成了数组,如下:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李 书 明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值