You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel中对不存在的表字段使用修改器(mutator)?

解决方案
  • 首先在对应模型中声明 $appends 属性,将非数据库字段 other_name 加入该数组,告知Laravel该字段为模型附加属性,需要触发对应的修改器/访问器逻辑:
// 在你的模型类中添加
protected $appends = ['other_name'];
  • 如果需要通过批量赋值(比如 create()、fill() 方法)给 other_name 赋值,还需要将该字段加入模型的 $fillable 白名单:
protected $fillable = [
    // 原有允许批量赋值的字段,比如name等
    'other_name'
];
  • 完成上述配置后即可正常触发修改器,赋值示例:
// 直接赋值
$user->other_name = 'test name';
echo $user->name; // 输出 test name

// 批量赋值
$user->fill(['other_name' => '批量测试名称']);
echo $user->name; // 输出 批量测试名称

原理说明

Laravel默认只会对数据表实际存在的字段、以及$appends中声明的附加属性触发对应的修改器/访问器逻辑,未声明的自定义属性赋值会被识别为普通类属性赋值,不会走修改器流程。

内容的提问来源于stack exchange,提问作者Randy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:57:06