php 逻辑值转换,laravel 5 中Eloquent的属性类型转换真是太棒了!

属性类型转换是Laravel中Eloquent模型的一个最近添加的新属性,现在暂时没有获得太多关注。那么它是什么,有时怎么使用的呢?

类型转换指的是隐式或者显式的将实体从一种数据类型转为另外一种数据类型。这是一个值为"100"的变量从字符串转换为整形的例子:$value = "100"; // $value是一个字符串

$value = (int) "100"; // $value转换为一个整形

在Laravel 4中,你只能手动地添加访问方法和/或调整方法处理属性以实现变量类型转换public function getAgeAttribute($value)

{

return (int) $value;

}

但不在需要这样了!Laravel 5新添加的属性转化功能能让这些变得更为容易些。在模型类文件中的$casts属性里,写上那些需要转换的属性及其对应目标类型:protected $casts = [

'age' => 'integer'

];

这样,无论你什么时候使用这个age属性,它都会被Eloquent转换为整形integervar_dump($user->age); // int(25)得到整形的25`

对于我个人而言,正将在处理布尔型boolen变量的时候特别有用。布尔型变量通常在数据库中存成TINYINT类型,而当Eloquent从数据库生成这个模型时,布尔型变量将变成"1"或者"0"的字符串返回。“幸运”的是PHP能做出判断并将这些字符串隐式转换为对应的布尔型,但如果在通过JSON将模型传参给javascript,那么就糟糕了:user = {

"id": "1",

"username": "jens",

"activated": "0" // 布尔型的false变为了字符串的"0"

};

user.activated ? "yes" : "no"; // will output "yes" 判断用户是否启用时变为相反的"yes"

而通过Laravel 5中的属性类型转换,将activated放进模型$casts中,它的值将自动转换为布尔型,不会再在javascript中造成问题{

"id": "1",

"username": "jens",

"activated": true

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值