二十五、ThinkPHP6_模型的获取器和修改器

本文探讨了如何在PHP应用中通过获取器和修改器处理模型数据,包括自定义虚拟字段的转换、动态获取器的使用以及模型修改器对数据的预处理。理解并掌握这些技术有助于提升代码组织和数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、模型获取器

  1. 获取器的作用是对模型实例的数据做出自动处理。一个获取器对应模型一个特殊方法,该方法为 public,方法名的命名规范为:getFieldAttr();比如,数据库表示状态 status 字段采用的是数值,我们需要输出 status 字段希望是中文,就可以使用获取器,在User 模型端,创建一个对外的方法。
//模型端
public function getStatusAttr($value)
{
	$status =[-1=>'禁用',1=>'正常',0=>'待审核'];
	return $status[$value];
}

//控制器端,直接输数据库这段的值即可得到获取器转换的对应值
$user = UserModel::find(19);
echo $user['status'];
  1. 自定义虚拟字段
//模型端
//Noting 这个字段不存在,此时参数 $value 只是为了占位,并未使用,$data 筛选到的数据,然后得到最终值
public function getNothingAttr($value,$data)
{
	$myGet = [-1=>'禁用',1=>'正常',0=>'待审核'];
	return $myGet[$data['status']];
}

//控制器
return $user->nothing;
  1. 定义获取器,并且想获得原始值,使用 getData() 方法;
return $user->getData('status');//这个原生字段值
$user->getData();//所有原生字段值
  1. withAttr 在控制器端实现动态获取器,这个优先级大于模型获取器;比如设置所有 email 为大写
$user = UserModel::WithAttr('email',function($value){
	return strtoupper($value);
})->select();

二、模型修改器

  1. 模型修改器的作用,就是对模型设置对象的值进行处理,比如我们新增数据的时候,对数据就进行了格式化、过滤,转换等处理,模型修改器命名规则为:setFieldAttr(),新增,修改会触发修改。模型修改器只对模型方法有效,调用数据库的方法是无效的,比如-> insert();
public function setEmailAttr($value)
{
	return strtoupper($value);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值