首页 > 开发 > PHP > 正文

laravel学习教程之存取器

2024-05-04 22:28:59
字体:
来源:转载
供稿:网友

前言

Laravel是一个简单优雅的PHP Web开发框架,可以将开发者从意大利面条式的代码中解放出来,通过简单、高雅、表达式语法开发出很棒的Web应用,那下面跟着小编一起来学习laravel中的存取器吧。

Eloquent: 存取器简介

访问器和存储器允许你在获取或者设置 Eloquent 模型属性值时对其进行格式化操作。比如,你可能希望当一个值存储进数据库之前先对其进行 Laravel encrypter 进行加密操作,并且可以在你通过模型访问的时候自动的进行该属性的解密。

除了可自定义的的访问器和存储器,Eloquent 也可以自动的将日期字段转换为 Carbon 实例,或者甚至是将字符串字段转换为 JSON。

访问器 & 存取器

定义一个访问器

为了定义一个访问器,你需要在你的模型上创建一个 getFooAttribute 方法,其中的 Foo 是你需要进行访问的列名的驼峰方式的命名。在这个例子中,我们将定义一个 first_name 属性的访问器。这个访问器会在 Eloquent 尝试获取 first_name 属性值时触发:

<?phpnamespace App;use Illuminate/Database/Eloquent/Model;class User extends Model{ /**  * Get the user's first name.  *  * @param string $value  * @return string  */ public function getFirstNameAttribute($value) {  return ucfirst($value); }}

就如你所看到的,属性原始的值会被传递到访问器中,这允许你对原始值进行操作及返回格式化后的值。你只需要简单的访问 first_name 属性就可以从存取器中访问该值:

$user = App/User::find(1);$firstName = $user->first_name;

定义一个存储器

为了定义一个存储器,你需要在你的模型上定义一个 setFooAttribute 方法,其中的 Foo 是你期望访问的列的驼峰样式的名称。那么,这一次,让我们为 first_name 属性定义一个存储器。这个存储器会在模型尝试设置 first_name 属性的值时进行调用:

<?phpnamespace App;use Illuminate/Database/Eloquent/Model;class User extends Model{ /**  * Set the user's first name.  *  * @param string $value  * @return string  */ public function setFirstNameAttribute($value) {  $this->attributes['first_name'] = strtolower($value); }}

存储器会接收即将设置到属性中的值,这允许你对这个值进行操作,并将其设置到模型内部的 $attributes 属性中。所以,举个示例,如果我们尝试将 first_name 属性设置为 Sally:

$user = App/User::find(1);$user->first_name = 'Sally';


在这个例子中,setFirstNameAttribute 方法会被调用并伴随

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表