首页 > 解决方案 > 如何在字段名称包含数字的模型中定义访问器?

问题描述

我正在尝试在我的用户模型中为已经存在的字段定义一个访问器。这个字段address_line_1在我的数据库中被调用。但是,由于字段名称包含一个数字,我不确定如何让 Laravel 识别“行”之后有一个下划线。

通常要定义下划线,你会使用驼峰式大小写,但在这种情况下你不能。我已经检查了 Laravel 文档,但是没有提到这个问题。以下是我目前的代码:

public function getAddressLine1Attribute($value){
    return empty($value) ? '' : decrypt($value);
}

我也试过函数名getAddress_Line_1AttributegetAddressLine_1Attribute但这不起作用。

我怎样才能解决这个问题?

标签: phplaravellaravel-5

解决方案


Laravel 5.7 调用这个函数来检查 get mutator 是否存在:

 /**
 * Determine if a get mutator exists for an attribute.
 *
 * @param  string  $key
 * @return bool
 */
public function hasGetMutator($key)
{
    return method_exists($this, 'get'.Str::studly($key).'Attribute');
}

'get'.Str::studly('address_line_1').'Attribute' === 'getAddressLine1Attribute'

所以看来你的方法名称是正确的。


推荐阅读