您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
thinkphp5学习笔记-转换与自动完成
发布时间:2018-06-14 21:32:52编辑:雪饮阅读()
转换:
thinkphp5中提供有类型转换,在自定义模型中声明一个保护型变量type并赋值一个由多个键值对组成的数组,每个键值对的键对应你要进行处理的字段名,值则是处理方式,处理方式有多种,而且每种在读取和写入时的规则也有所不同,完整的可以结合thinkphp5的文档查看.
这里只列举两种timestamp和serialize
在模型中声明如:
protected $type=['expireTime'=>'timestamp:Y-m-d','srcimg'=>'serialize'];
控制器中调用如:
$sUser=sUser::get(38);
p($sUser->expireTime);
p($sUser->srcimg);
解析:
指定为时间戳字段类型的话,该字段的值在写入时候会自动使用strtotime生成对应的时间戳,输出的时候会自动转换为dateFormat属性定义的时间字符串格式,默认的格式为Y-m-d H:i:s.
指定为序列化类型的话,数据会自动序列化写入,并且在读取的时候自动反序列化。
自动完成:
自动完成和转换的声明有些类似,不过声明的变量名有三种insert、update、auto
insert表示在插入式执行自动完成,update在更新时执行自动完成,auto则是在update和插入时都自动完成。
自动完成可以独立声明也可以和修改器结合。
自动完成的使用场景:对创建用户时用户密码的加密存储以及创建时间等类似场景使用
(1)模型中独立声明自动完成如:
protected $insert=['sex'=>0];
控制器调用如:
$sUser=new sUser;
$sUser->username='雪饮';
$sUser->psw=md5('dmj');
$sUser->save();
(2)模型中结合修改器如:
protected $update=['sex'];
protected function setSexAttr($sex){
if($sex=='男') $sex='女';
else if($sex=='女') $sex='男';
else $sex='女';
return $sex;
}
控制器调用如:
$sUser=sUser::get(2022);
$sUser->username='雪饮';
$sUser->psw=md5('dmj');
$sUser->save();
关键字词:thinkphp5,转换,自动完成