Eyoucms程序开发:类型转换
支持给字段设置类型自动转换,会在写入和读取的时候自动进行类型转换处理,例如:
class User extends Model
{
protected $type = [
'status' => 'integer',
'score' => 'float',
'birthday' => 'datetime',
'info' => 'array',
];
}
下面是一个类型自动转换的示例:
$user = new User;
$user->status = '1';
$user->score = '90.50';
$user->birthday = '2015/5/1';
$user->info = ['a'=>1,'b'=>2];
$user->save();
var_dump($user->status); // int 1
var_dump($user->score); // float 90.5;
var_dump($user->birthday); // string '2015-05-01 00:00:00'
var_dump($user->info);// array (size=2) 'a' => int 1 'b' => int 2
数据库查询默认取出来的数据都是字符串类型,如果需要转换为其他的类型,需要设置,支持的类型包括如下类型:
integer
设置为integer(整型)后,该字段写入和输出的时候都会自动转换为整型。
float
该字段的值写入和输出的时候自动转换为浮点型。
boolean
该字段的值写入和输出的时候自动转换为布尔型。
array
如果设置为强制转换为array
类型,系统会自动把数组编码为json格式字符串写入数据库,取出来的时候会自动解码。
object
该字段的值在写入的时候会自动编码为json字符串,输出的时候会自动转换为stdclass
对象。
serialize
指定为序列化类型的话,数据会自动序列化写入,并且在读取的时候自动反序列化。
json
指定为json
类型的话,数据会自动json_encode
写入,并且在读取的时候自动json_decode
处理。
timestamp
指定为时间戳字段类型的话,该字段的值在写入时候会自动使用strtotime
生成对应的时间戳,输出的时候会自动转换为dateFormat
属性定义的时间字符串格式,默认的格式为Y-m-d H:i:s
,如果希望改变其他格式,可以定义如下:
class User extends Model
{
protected $dateFormat = 'Y/m/d';
protected $type = [
'status' => 'integer',
'score' => 'float',
'birthday' => 'timestamp',
];
}
或者在类型转换定义的时候使用:
class User extends Model
{
protected $type = [
'status' => 'integer',
'score' => 'float',
'birthday' => 'timestamp:Y/m/d',
];
}
然后就可以
$user = User::find(1);
echo $user->birthday; // 2015/5/1
datetime
和timestamp
类似,区别在于写入和读取数据的时候都会自动处理成时间字符串Y-m-d H:i:s
的格式。
相关文档
- 迅睿cms搜索参数单选/多选/下拉字段条件筛选写法
- 迅睿cms调用字段敏感信息首尾截取中间隐藏用星号代替
- 迅睿cms怎么生成真静态?设置定时自动生成静态任务方法
- 迅睿cms内容描述多行文本字段如何保留空格与换行?
- 模块内容字段填写表格Ftable的列名称调用方法
- 迅睿cms怎么设置定时自动执行任务队列
- Simple Slug Translate 把WordPress...
- 利用搜索引擎的自动填充功能挖掘问题型词汇
- 利用搜索引擎自动填充功能拓展各类关键词
- WordPress 去掉留言中的网址字段
- 迅睿CMS:后台字段回调格式无效
- 迅睿CMS:用户组支持在线付款的升级
- 迅睿CMS:上传字段未定义
- 迅睿CMS:移动端评论表单无法加载自定义字段
- 迅睿CMS:图片专用字段怎么调用
- 迅睿CMS:系统未设置附件缓存时间
- 迅睿CMS:域名改错了怎么还原
- 迅睿CMS:系统没有设置默认注册的用户组
- 迅睿CMS:自定义下单字段
- 迅睿CMS:评论名称命名设置
上一篇: Eyoucms程序开发:软删除
下一篇: Eyoucms程序开发:数据完成