您好,欢迎访问一九零五行业门户网

[ Laravel 5.2 文档 ] Eloquent ORM -- 访问器&修改器

1、简介 访问器和修改器允许你在获取模型属性或设置其值时格式化eloquent 属性。例如,你可能想要使用laravel加密器对存储在数据库中的数据进行加密,并且在 eloquent 模型中访问时自动进行解密。
除了自定义访问器和修改器,eloquent 还可以自动转换日期字段为carbon实例甚至将文本转换为json。
2、访问器 & 修改器 定义访问器
要定义一个访问器,需要在模型中创建一个 getfooattribute方法,其中 foo是你想要访问的字段名(使用驼峰式命名规则)。在本例中,我们将会为 first_name属性定义一个访问器,该访问器在获取 first_name的值时被 eloquent 自动调用:
first_name;
定义修改器
要定义一个修改器,需要在模型中定义 setfooattribute方法,其中 foo是你想要访问的字段(使用驼峰式命名规则)。接下来让我们为 first_name属性定义一个修改器,当我们为模型上的 first_name赋值时该修改器会被自动调用:
attributes['first_name'] = strtolower($value); }}
该修改器获取要被设置的属性值,允许你操纵该值并设置 eloquent 模型内部属性值为操作后的值。例如,如果你尝试设置 sally的 first_name属性:
$user = app\user::find(1);$user->first_name = 'sally';
在本例中, setfirstnameattribute方法会被调用,传入参数为 sally,修改器会对其调用 strtolower函数并将处理后的值设置为内部属性的值。
3、日期修改器 默认情况下,eloquent 将会转化 created_at和 updated_at列的值为 carbon 实例,该类继承自 php 原生的 datetime类,并提供了各种有用的方法。
你可以自定义哪些字段被自动调整修改,甚至可以通过重写模型中的 $dates属性完全禁止调整:
disabled_at = carbon::now();$user->save();
正如上面提到的,当获取被罗列在 $dates数组中的属性时,它们会被自动转化为 carbon实例,允许你在属性上使用任何 carbon的方法:
$user = app\user::find(1);return $user->disabled_at->gettimestamp();
默认情况下,时间戳的格式是“y-m-d h:i:s”,如果你需要自定义时间戳格式,在模型中设置 $dateformat属性,该属性决定日期属性存储在数据库以及序列化为数组或 json 时的格式:
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();
其它类似信息

推荐信息