美文网首页PHP知识
ThinkPHP 的获取器和设置器

ThinkPHP 的获取器和设置器

作者: _不能说的秘密i | 来源:发表于2018-10-25 14:14 被阅读29次

ThinkPHP version: 5.*

在存储数据时,有时候为了节省空间和方便判断,并不是直接存储的, 比如数据库的 用户表 users性别 sex 这个字段,存储的是 0 和 1, 那么在取出来的是否,就需要加工处理,然后在展示...如果是使用 laravel 或者 ThinkPHP 5.* 以上版本就可以使用 获取器/设置器来控制这样的数据

注意: 在使用获取器/设置器时, 必须使用 get字段Attr 的形式,如 getUserNameAttr,使用驼峰命名, 但是在获取这个字段字段时候必须使用下划线的形式, 如 $user->user_name

获取器

  • 对值进行转换(改变原来的值)
class User extends Model {
    public function getSexAttr ($value) {
        return $value == 1 ? '男' : '女';
    }
}
// 获取数据
User::find(1)->sex;

此时,获取的是改变后的数据

  • 定义数据表表中不存在的值(不改变原来的值)
class User extends Model {
    public function getSexTextAttr ($value) {
        $text = [0=> '女', 1 => '男'];
        return $text[$value];
    }
}
// 此时就可以获取这个新属性了
 User::find(1)->sex_text;

// 获取原始数据
 User::find(1)->sex;

此时可以获取原数据, 也可以访问新属性数据

修改器

在数据存入数据库之前先加工在存入数据库,比如讲名字全部转为小写后在存入数据库

public function setPasswordAttr($value) {
    return md5($value);
}

注意: 此处有坑, 这个方法,只能是使用 save 有效果, 使用 insert 方法没有效果

$user->password = '123456';
$user->save(); // 此时会自动 md5 处理

ThinkPHP 官方文档: 修改器方法仅对模型的写入方法有效, 调用数据库的写入方法写入无效,例如下面的方式修改器无效 本文是以 ThinkPHP 作为实验的, laravel 框架的 访问器 修改器 使用方式大同小异, 查阅官方文档就有详细的说明..

相关文章

  • ThinkPHP 的获取器和设置器

    ThinkPHP version: 5.* 在存储数据时,有时候为了节省空间和方便判断,并不是直接存储的, 比如数...

  • Thinkphp5.1 的多级控制器和分层控制器

    Thinkphp5.1 的多级控制器和分层控制器 1.什么是多级控制器?如何进行定义使用? 根据thinkphp的...

  • laravel 基础教程 —— 存取器

    Eloquent: 存取器 简介 访问器和存储器允许你在获取或者设置 Eloquent 模型属性值时对其进行格式化...

  • thinkphp5.0 读取器(获取器)

    获取器的作用是在获取数据的字段值后自动进行处理 如图所示: 图一为数据表,图二为控制器(controller),图...

  • @property

    1.@property说明 @property声明属性的语法,可以生成变量存储器。 存储器:指用于设置变量和获取变...

  • 时间与日期(设置时区)

    在PHP中是通过日期和时间函数来获取日期和时间的。日期和时间函数依赖于服务器的时间设置,服务器的时间设置默认是格林...

  • Objective-C中的@property

    1.什么是存取器 accessor(存取器):顾名思义,指用于获取和设置对象实例变量的方法。《Cocoa Desi...

  • RobotFramework学习04-扩展库之 Selenium

    RobotFramework学习笔记目录 本文包含内容: 浏览器驱动 关闭浏览器 浏览器最大化 获取/设置浏览器窗...

  • thinkphp6 触发获取器

    ->toArray()方法只会触发定义的数据表中存在的字段的获取器如果获取器定义数据表中不存在的字段,返回列表时使...

  • jquery尺寸相关,滚动事件

    获取和设置元素的尺寸 获取元素相对页面的绝对位置 获取浏览器可视区宽度高度 获取页面文档的宽度高度 获取页面滚动距...

网友评论

    本文标题:ThinkPHP 的获取器和设置器

    本文链接:https://www.haomeiwen.com/subject/bgoqtqtx.html