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);
}
输出结果哪下:
扫描二维码关注公众号,回复:
8797457 查看本文章
通过上面的输出结果来看,使用find()方法,得到并不是一维数组,而是一个对象,所以还要后 续的处理
public function getstudent($no)
{
$stu = new Student();
$data = $stu->where('no',$no)->find();
//将对象转换成数组
$data = $data->toArray();
print_r($data);
}
输出结果变成了数组,如下: