前言
Laravel是一个简单优雅的PHP Web开发框架,可以将开发者从意大利面条式的代码中解放出来,通过简单、高雅、表达式语法开发出很棒的Web应用,那下面跟着小编一起来学习laravel中的存取器吧。
Eloquent: 存取器简介
访问器和存储器允许你在获取或者设置 Eloquent 模型属性值时对其进行格式化操作。比如,你可能希望当一个值存储进数据库之前先对其进行 Laravel encrypter 进行加密操作,并且可以在你通过模型访问的时候自动的进行该属性的解密。
除了可自定义的的访问器和存储器,Eloquent 也可以自动的将日期字段转换为 Carbon 实例,或者甚至是将字符串字段转换为 JSON。
访问器 & 存取器
定义一个访问器
为了定义一个访问器,你需要在你的模型上创建一个 getFooAttribute
方法,其中的 Foo
是你需要进行访问的列名的驼峰方式的命名。在这个例子中,我们将定义一个 first_name
属性的访问器。这个访问器会在 Eloquent 尝试获取 first_name
属性值时触发:
<"htmlcode">$user = App\User::find(1); $firstName = $user->first_name;定义一个存储器
为了定义一个存储器,你需要在你的模型上定义一个
setFooAttribute
方法,其中的Foo
是你期望访问的列的驼峰样式的名称。那么,这一次,让我们为first_name
属性定义一个存储器。这个存储器会在模型尝试设置first_name
属性的值时进行调用:<"htmlcode">$user = App\User::find(1); $user->first_name = 'Sally';
在这个例子中,setFirstNameAttribute
方法会被调用并伴随Sally
值。存储器会应用strtolower
方法将名字小写化然后将值设置到内部的$attributes
数组中。日期存取器
默认的,
Eloquent
会转换created_at
和updated_at
列为Carbon
实例,这个实例可以提供多种有用的方法,并且它继承自原生 PHP 的DataTime
类。你可以自定义哪些字段可以进行自动的转换,甚至是完全禁用这种转换,你需要在你的模型中复写
$dates
属性:<"htmlcode">$user = App\User::find(1); $user->deleted_at = Carbon::now(); $user->save();就如上面所述,当获取的属性是
$dates
属性所列出的值之一时,它会自动的被转换为Carbon
实例,这允许你在属性上使用Carbon
的一些方法:$user = App\User::find(1); return $user->deleted_at->getTimestamp();
默认的,时间戳被格式化为Y-m-d H:i:s
的格式。如果你希望自定义时间戳的格式,你需要在你的模型中设置$dateFormat
属性。该属性将确定日期属性将如何存储到数据库中以及当模型进行序列化或者JSON
化时如何展示:<"htmlcode"><"htmlcode">$user = App\User::find(1); if ($user->is_admin) { // }数组转换
array
转换的类型对于存储序列化 JSON 值的列尤其有用。比如,如果数据库有一个 TEXT 类型的字段,并且其存储的是序列化的 JSON,如果你添加该属性的array
转换,那么当你在 Eloquent 模型上访问这个属性时,它将会自动的进行反序列化为 PHP 的数组:<"htmlcode">$user = App\User::find(1); $options = $user->options; $options['key'] = 'value'; $user->options = $options; $user->save();以上就是小编为大家整理的laravel学习教程之存取器的全部内容,有需要的小伙伴们可以参考学习,小编陆续还会更新laravel相关的知识,请大家继续关注。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com桃源资源网 Design By www.nqtax.com暂无“laravel学习教程之存取器”评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。