Laravel如何使用访问器(Accessors)和修改器(Mutators)

访问器用于格式化读取的数据,如首字母大写或组合字段;修改器用于处理写入的数据,如转小写或加密。1. 定义get{AttributeName}Attribute方法实现访问器;2. 定义set{AttributeName}Attribute方法实现修改器;3. 仅在Eloquent模型操作中生效,可结合$appends自动序列化。

laravel如何使用访问器(accessors)和修改器(mutators)

在 Laravel 中,访问器(Accessors)和修改器(Mutators)是 Eloquent 模型中非常实用的功能,用于在获取或设置模型属性时对数据进行格式化或处理。它们能让你更灵活地控制数据的读取与写入方式,而无需在业务逻辑中重复处理。

什么是访问器(Accessors)

访问器用于在从数据库获取属性值后,对其进行格式化处理。例如,将数据库中的小写姓名转换为首字母大写,或将时间戳转换为可读日期。

定义访问器的方法是:在模型中创建一个以 get{AttributeName}Attribute 命名的方法,其中 {AttributeName} 是你想要处理的字段名,采用驼峰命名法。

例如,假设数据库中有一个 first_name 字段,你想在获取时自动首字母大写:

public function getFirstNameAttribute($value){    return ucfirst($value);}

这样,每次访问 $user->first_name 时,返回的值都会被自动格式化。

也可以组合多个字段,比如生成一个全名:

public function getFullNameAttribute(){    return $this->first_name . ‘ ‘ . $this->last_name;}

调用 $user->full_name 即可得到完整姓名。

什么是修改器(Mutators)

修改器用于在将数据保存到数据库之前对其进行处理。比如将邮箱统一转为小写、加密敏感信息或格式化日期。

定义修改器的方法是:创建一个以 set{AttributeName}Attribute 命名的方法。

易森网络企业版 易森网络企业版

如果您是新用户,请直接将本程序的所有文件上传在任一文件夹下,Rewrite 目录下放置了伪静态规则和筛选器,可将规则添加进IIS,即可正常使用,不用进行任何设置;(可修改图片等)默认的管理员用户名、密码和验证码都是:yeesen系统默认关闭,请上传后登陆后台点击“核心管理”里操作如下:进入“配置管理”中的&ld

易森网络企业版 0 查看详情 易森网络企业版

例如,确保所有邮箱都以小写存储:

public function setEmailAttribute($value){    $this->attributes[’email’] = strtolower($value);}

这样无论传入的是大写还是混合大小写邮箱,保存时都会被规范化。

另一个常见用途是处理日期或序列化数组:

public function setProfileDataAttribute($value){    $this->attributes[‘profile_data’] = json_encode($value);}

这允许你传入数组或对象,并自动将其转为 JSON 存储。

使用场景示例

自动格式化电话号码、地址等用户输入 敏感字段加密(如身份证、手机号) 日期字段转换为 Carbon 实例便于操作 图片路径拼接完整 URL 状态字段映射为中文描述(如 1 => “启用”)

注意:访问器和修改器只在通过模型操作数据时生效。如果使用 DB 类直接查询或更新,这些方法不会被调用。

小贴士

如果字段名包含多个单词,比如 created_at,对应的访问器应为 getCreatedAtAttribute。数据库字段使用蛇形命名,方法使用驼峰命名。

还可以将访问器字段加入模型的 $appends 属性中,使其在序列化时自动包含:

protected $appends = [‘full_name’];

基本上就这些。合理使用访问器和修改器能让模型更干净,逻辑更集中,避免在控制器或视图中做重复的数据处理。不复杂但容易忽略。

以上就是Laravel如何使用访问器(Accessors)和修改器(Mutators)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/863982.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月28日 01:07:33
下一篇 2025年11月28日 01:09:09

相关推荐

发表回复

登录后才能评论
关注微信