codecamp

属性类型转换

如果您想要某些属性始终转换成另一个数据类型, 您可以在模型中增加 casts 属性。否则,您需要为每个属性定义修改器,这样会增加更多的时间开销。这里有一个使用 casts 属性的例子:

/**
 * 需要被转换成基本类型的属性值。
 *
 * @var array
 */
protected $casts = [
    'is_admin' => 'boolean',
];

现在当你获取 is_admin 属性时始终会是布尔类型,甚至在数据库中存储的这个值是一个整型也会被转换。其他支持的类型转换值有: integer, real, float, double, string, boolean, object 和 array 。

如果您存储的值是一个序列化的 JSON 时,那么 array 类型转换将会非常有用。比如,您的数据表里有一个 TEXT 类型的字段存储着序列化后的 JSON 数据, 通过增加 array 类型转换, 当获取这个属性的时候会自动反序列化成 PHP 的数组:

/**
 * 需要被转换成基本类型的属性值。
 *
 * @var array
 */
protected $casts = [
    'options' => 'array',
];

现在,当你使用 Eloquent 模型时:

$user = User::find(1);
// $options 是一个数组...
$options = $user->options;
// options 会自动序列化成 JSON...
$user->options = ['foo' => 'bar'];
日期转换器
模型事件
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

环境配置

系统服务

哈希

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }