有些字段的特殊处理-使用修改器与访问器-比如银行卡信息

未匹配的标注

学习链接

xueyuanjun.com/post/9710

DB查询

略,太简单了。没难度

ORM

访问器

数据库返回的部分字段我需要进行特殊处理怎么办?

访问器用于从数据库获取对应字段值后进行一定处理满足指定需求再返回给调用方。

们可以在 User 模型类中添加相应的方法 getDisplayNameAttribute(注意这里的转化方式,将小写字母+短划线格式属性转化为驼峰格式方法,后面的修改器也是这样):

public function getDisplayNameAttribute()


{

     return $this->nickname ? $this->nickname : $this->name;


}

这样,我们就可以在代码中直接通过 $user->display_name 访问期望的用户名了

访问器方法名中包含的字段尽量不要和数据库字段名同名,否则会覆盖数据库字段

修改器

使用修改器

修改器用于在字段值保存到数据库之前进行一定处理满足需求后再存到数据库。

访问器,与 修改器的例子。

场景

在保存用户银行卡号的时候需要加密后才能保存,显示时需要对银行卡号进行脱敏处理。

解决方案

比如说,user 模型 有 一个 card_no 字段

定义一个加密银行卡号的修改器,去掉所有空格,这个操作仅仅是一个例子

public function setCardNoAttribute($value)
{
    $value = str_replace(' ', '', $value);  // 将所有空格去掉
    $this->attributes['card_no'] = encrypt($value);
}

接下来我们需要定义访问器,来加密这个字段。

数据库查询

则代码如下:

public function getCardNumAttribute()
{
    if (!$this->card_no) {
        return '';
    }
    $cardNo = decrypt($this->card_no);
    $lastFour = mb_substr($cardNo, -4);
    return '**** **** **** ' . $lastFour;
}

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~