Laravel 5.7含数字属性名的模型访问器被忽略问题求助
解决Laravel 5.7中含数字字段的访问器不生效问题
可能的原因及解决步骤
1. 清除类缓存
Laravel的类缓存可能导致模型的访问器修改未被加载,执行以下命令清除缓存:
php artisan clear-compiled php artisan cache:clear php artisan config:clear
2. 验证访问器命名的正确性
虽然你按规则命名了getItem1QualityAttribute,可以手动验证Laravel的字段名转换逻辑,在tinker中执行:
use Illuminate\Support\Str; echo Str::studly('item_1_quality'); // 正常应输出Item1Quality
如果输出符合预期,说明命名本身没问题,问题出在其他环节。
3. 直接重写getAttribute方法强制处理
如果上述方法无效,可以在模型中重写getAttribute方法,手动指定该字段的处理逻辑:
public function getAttribute($key) { if ($key === 'item_1_quality') { // 此处编写你的访问器逻辑,示例: $value = parent::getAttribute($key); return $value ? ucfirst($value) : '无'; } return parent::getAttribute($key); }
4. 检查模型的其他配置
- 确认模型中
$casts属性没有对该字段做可能冲突的类型转换 - 排查是否有其他Trait或扩展方法覆盖了访问器的调用逻辑
内容的提问来源于stack exchange,提问作者Daniel Plewinski
相关产品推荐
相关产品推荐

