Laravel 8登录后如何为auth()函数的user对象添加非表字段自定义属性
Laravel 8 给User模型追加自定义字段的实现方案
方案1:使用模型访问器(长期生效,推荐)
这是Laravel原生支持的最佳方案,无需修改数据库,全局生效:
- 打开
app/Models/User.php模型文件 - 在User类中添加自定义字段的访问器方法:
public function getUsFullnameAttribute() { // 可根据需求调整拼接规则,比如加空格、特殊符号等 return trim($this->us_name . ' ' . $this->us_surname); }
- (可选)如果需要该字段在模型转数组/JSON时自动带出(比如接口返回、
dd()打印时可见),在User类中添加$appends属性注册字段:
protected $appends = ['us_fullname'];
配置完成后即可直接通过auth()->user()->us_fullname访问拼接后的完整姓名,所有User模型实例都支持该属性访问。
方案2:临时赋值(仅当前请求生效)
如果只需要在当前请求的用户对象上临时加自定义值,不需要全局生效,可以直接赋值:
// 登录成功后或任意位置直接给用户对象追加属性 auth()->user()->us_fullname = trim(auth()->user()->us_name . ' ' . auth()->user()->us_surname);
赋值后当前请求周期内都可以直接通过auth()->user()->us_fullname访问,请求结束后自动失效。
内容的提问来源于stack exchange,提问作者Uncertainty
相关产品推荐
相关产品推荐

