laravel学习教程之存取器
Laravel  /  管理员 发布于 8年前   198
前言 Laravel是一个简单优雅的PHP Web开发框架,可以将开发者从意大利面条式的代码中解放出来,通过简单、高雅、表达式语法开发出很棒的Web应用,那下面跟着小编一起来学习laravel中的存取器吧。 Eloquent: 存取器简介 访问器和存储器允许你在获取或者设置 Eloquent 模型属性值时对其进行格式化操作。比如,你可能希望当一个值存储进数据库之前先对其进行 Laravel encrypter 进行加密操作,并且可以在你通过模型访问的时候自动的进行该属性的解密。 除了可自定义的的访问器和存储器,Eloquent 也可以自动的将日期字段转换为 Carbon 实例,或者甚至是将字符串字段转换为 JSON。 访问器 & 存取器 定义一个访问器 为了定义一个访问器,你需要在你的模型上创建一个 就如你所看到的,属性原始的值会被传递到访问器中,这允许你对原始值进行操作及返回格式化后的值。你只需要简单的访问 定义一个存储器 为了定义一个存储器,你需要在你的模型上定义一个 存储器会接收即将设置到属性中的值,这允许你对这个值进行操作,并将其设置到模型内部的 日期存取器 默认的, 你可以自定义哪些字段可以进行自动的转换,甚至是完全禁用这种转换,你需要在你的模型中复写 当一列被认为是日期时,你可以将其设置为 UNIX 时间戳,日期字符串( 就如上面所述,当获取的属性是 属性转换 你可以在你的模型中定义 比如,让我们转换 现在,每当你访问 数组转换 当你转义定义完成之后,你可以访问 以上就是小编为大家整理的laravel学习教程之存取器的全部内容,有需要的小伙伴们可以参考学习,小编陆续还会更新laravel相关的知识,请大家继续关注。 getFooAttribute
方法,其中的 Foo
是你需要进行访问的列名的驼峰方式的命名。在这个例子中,我们将定义一个 first_name
属性的访问器。这个访问器会在 Eloquent 尝试获取 first_name
属性值时触发:first_name
属性就可以从存取器中访问该值:$user = App\User::find(1);$firstName = $user->first_name;
setFooAttribute
方法,其中的 Foo
是你期望访问的列的驼峰样式的名称。那么,这一次,让我们为 first_name
属性定义一个存储器。这个存储器会在模型尝试设置 first_name
属性的值时进行调用:attributes['first_name'] = strtolower($value); }}
$attributes
属性中。所以,举个示例,如果我们尝试将 first_name
属性设置为 Sally
:$user = App\User::find(1);$user->first_name = 'Sally';
在这个例子中,setFirstNameAttribute
方法会被调用并伴随 Sally
值。存储器会应用 strtolower
方法将名字小写化然后将值设置到内部的 $attributes
数组中。Eloquent
会转换 created_at
和 updated_at
列为 Carbon
实例,这个实例可以提供多种有用的方法,并且它继承自原生 PHP 的 DataTime
类。$dates
属性:Y-m-d
),时间字符串,和 DateTime / Carbon
实例,并且日期的值会自动的正确的存储到数据库中:$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
化时如何展示:$casts
属性来提供一种方便的方式将属性转换为通用的数据类型。$casts
属性应该是一个数组,并且其每一项的键应该是需要进行转换的属性名,而其键所对应的值应该是你需要属性转换到的类型。支持的转换类型有:integer
,real
,float
,double
,string
,boolean
,object
,array
,coolection
,date
,datetime
,和 timestamp
。 is_admin
属性,它在数据库中存储的值为一个整型(0 或者 1),我们将其转换为布尔值: 'boolean', ];}
is_admin
属性时,其值都会被转换为布尔值,即使其在数据库中存储的整型值:$user = App\User::find(1);if ($user->is_admin) { //}
array
转换的类型对于存储序列化 JSON 值的列尤其有用。比如,如果数据库有一个 TEXT 类型的字段,并且其存储的是序列化的 JSON,如果你添加该属性的 array
转换,那么当你在 Eloquent 模型上访问这个属性时,它将会自动的进行反序列化为 PHP 的数组: 'array' ];}
options
属性,并且它会自动的被从 JSON 反序列化为 PHP 数组。当你设置值到 options
属性时,所给定的数组会自动的序列化为 JSON 格式,然后进行存储:$user = App\User::find(1);$options = $user->options;$options['key'] = 'value';$user->options = $options;$user->save();
您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号