|
其实吧 就是默认初始化数据库中的值;
一、模型的读取器
触发条件:当模型对象读取表中字段值的时候
应用场景:日期时间字段,集合或枚举数据,数字状态与文本转换,字段拼装;
设置位置:在模型中设置,访问属性通常为protected,不允许外部直接访问;
方法名称:【就是命名规则】 get属性名称Attr($name,$data=[])
例如: getFieldNameAttr($name,$data=[]); // 驼峰命名法,对应表中字段名: field_name
模型读取器的工作原理:
1.获取表中的记录并创建模型对象 $staff=Staff::get(1088);
2.模型对象访问属性 $staff->hiredate;
3.自动调用模型__get(); [这是模型自己干的事]
4.__get()调用getAttr(); [这是模型自己干的事]
5.getAttr() 解析读取器.get字段名attr() [这是模型自己干的事]
6.输出数据 return $staff->hiredate;
【备注:模型记录原始数据保存在$data属性中,可用getData() 方法获取 $staff->getData('字段名称') 前面几章其实常用】
【我个人认为,所谓的模型读取器,其实就是在读取的时候提前对他进行操作,比方说权限1是admin ,权限2 是超级管理员, 而我们输出不是权限,而是他的职位名称。 因为我们操作的是模型,模型再操作数据库, 那么 在我们控制器读取模型变量的时候,模型就对这个变量预先处理加工,替换掉变量本身还叫这个名还给控制器】
controller/Dbk.php- <?php
- namespace app\articles\controller;
- use app\articles\model\Staff; //先引入 staff 类;
- header("Content-type: text/html; charset=utf-8");
- class Dbk
- {
- public function mk1()
- {
- return '进来了 }
- public function mk2()
- {
- $lma = Staff::get(17);
- return '拿到了'.$lma->name.'数据. 他的辞职的时间是'.$lma->lmtime ;
- }
- public function mk3()
- {
- $lma = Staff::get(17);
- return $lma->lmtime ;
- }
- }
复制代码
model/Staff.php- <?php
- namespace app\articles\model;
- use think\Model;
- class Staff extends Model
- {
- // 模型创建完成 文件名=类名=数据表名
-
- // 这就是模型读取器
- // protected function getLmTimeAttr($lmtime)
- // {
- // return strtotime($lmtime);
- // }
- // 读取器的第二个参数 $data 表示当前模型对象所有的值
- protected function getLmTimeAttr($lmtime,$data)
- {
- return $data['name'].'的职位是'.$data['juese'].'他的辞职的时间是'.strtotime($lmtime);
- }
- }
复制代码
|
|