获取器、修改器、自动时间戳、类型转换、自动完成、验证器学习总结

原创2018-12-17 01:51:30164
摘要:一、获取器1、获取器写在模型类中的一个方法,当用户通过模型获取表中数据时会自动触发。2、获取器主要应用场景:用于从数据表中读取数据;主要表现为(1)时间日期字段的格式化输出;(2)集合或枚举类型的输出;(3)数字状态字段的输出;(4)组合字段的输出。3、获取器方法命名规则: get字段名Attr(字段值[,所有字段]),例如 getSalaryAttr($value)。4、获取器可以为表不存在的字

一、获取器
1、获取器写在模型类中的一个方法,当用户通过模型获取表中数据时会自动触发。
2、获取器主要应用场景:用于从数据表中读取数据;主要表现为(1)时间日期字段的格式化输出;(2)集合或枚举类型的输出;(3)数字状态字段的输出;(4)组合字段的输出。
3、获取器方法命名规则: get字段名Attr(字段值[,所有字段]),例如 getSalaryAttr($value)。
4、获取器可以为表不存在的字段设置,纯粹的拼装字段内容。


二、修改器
1、修改器也是模型类中的一个方法,当用户通过模型更新表中数据时会自动触发。
2、修改器主要应用场景:(1)时间日期字段的转换写入;(2)集合或枚举类型的写入;(3)数字状态字段的写入;(4)某个字段涉及其它字段的条件或者组合写入。
3、修改器方法命名规则: set字段名Attr(字段值[,所有字段]),例如 setEntryTimeAttr($value)。

三、自动时间戳
1、添加与更新数据时,将创建时间、更新时间自动写入到指定字段中。
2、可以全局开启,也可以在模型中单独开启。一般不用全局开启,只用到在模型中单独开启。原因是不一定每一张表都需要有时间戳字段。
 (1)全局设置:config/database.php
   //自动写入时间戳字段
      'auto_timestamp'  => false, //改为true为开启自动时间戳
      如果当前模型中不需要自动时间戳功能,可以手动关闭
      protected $autoWriteTimestamp = false;
 (2)开启当前模型的自动时间戳功能:
   protected $autoWriteTimestamp = true;
3、一旦开启自动时间戳功能,用户更新或添加数据时会自动将操作时间写入到以下二个字段:
 (1)新增时间: create_time
 (2)更新时间: update_time
 以上这二个字段名是默认值,可以在模型中重新定义。
    在模型中可以如下这样设置用户自定义的新增和更新时间的字段名
     protected $createTime = 'create_time';
     protected $updateTime = 'update_time';
4、不需要为这二个字段单独再去设置修改器,因为框架的自动时间戳功能会自动处理。

四、类型转换
1、表中取出的数据,默认都是字符类型。可以根据实际输出需要在模型中去配置字段值的类型转换设置。
2、在模型中配置: protected $type = ['字段名' => '类型名称',...]。
3、转换类型中没有字符型,因为它是默认类型,因此只有字符型是不需要单独在这里再去做类型转换设置的。

五、自动完成
1. 自动完成必须要配合修改器工作;
2. 自动完成是针对写操作: 新增与更新;
3. 通过在模型中设置三个属性来配置:
 (1)protected $insert = []; 只是针对新增时自动完成
 (2)protected $update = []; 只是针对更新时自动完成
 (3)protected $auto = []; 同时针对新增或更新时自动完成,因此这里设置针对新增和更新时自动完成的公共配置即可
4. 自动完成的功能类似于给表中字段设置默认值。

六、验证器
1、验证器分为自定义验证器和独立验证。
2、自定义验证器是自己创建一个验证类文件去编写验证规则和错误信息,该类要继承自think\Validate.php基类。
3、独立验证是直接实例化验证器类think\Validate.php来实现的。

批改老师:韦小宝批改时间:2018-12-17 09:19:31
老师总结:总结的没有问题!课后记得要多练习才可以!

发布手记

热门词条