Eloquent: 修改器的使用

参考laravel手册-Eloquent: 修改器

看了下这章内容,感觉写个实例更让人容易理解

定义一个访问器 getFooAttribute

假设我们的User.php模型里面对应的表是users表,里面有name字段。
我们要实现每次直接访问name属性时,可以将名字的首字母转换成大写

语法就是在User.php里面添加一个 “get属性Attribute” 函数
<?php
namespace App;
class User extends Authenticatable
{
    public function getNameAttribute($value)   // 如果是age,则 getAgeAttribute
    {
        return ucfirst($value);
    }
}

我们在控制器里面运行
$user = User::find(1);
return $user->name;

则可以看到id=1的用户信息里面,用户名的首字母转换成了大写 Lisi

定义一个修改器setFooAttribute

原理跟访问器是一样的.比如,我们用户id=1的信息里面,name=lisi。我们要把姓名改成张三

语法就是在User.php里面添加一个 “set属性Attribute” 函数
<?php
namespace App;
class User extends Authenticatable
{
    public function setNameAttribute($value)
    {
        $this->attributes['name'] = ucfirst($value);
    }
}

在控制器里面
 $user = User::find(1);
 $user->name = 'zhangsan';
  dd($user); 打印结果如下
修改器,lisi改成zhangsan
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文链接 必备品 文档:Documentation API:API Reference 视频:Laracasts ...
    layjoy阅读 12,725评论 0 121
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,906评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,337评论 19 139
  • 这真的是很久很久之前的一段文字了。没有什么太华丽的文字,没有什么太深奥的意义,却在很多年后再次看到依然很是喜欢,因...
    起初哥哥阅读 3,405评论 0 5
  • 姓名:郑文华 公司:宁波大发化纤有限公司 《六项精进》289期学员 【日精进打卡第25天】 【知~学习】 《六项精...
    13c78e1e6538阅读 1,501评论 0 0