如何在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
相关产品推荐
相关产品推荐

