加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – 如何强制laravel使用camelCase作为列名

发布时间:2020-12-14 19:44:31 所属栏目:大数据 来源:网络整理
导读:Larvel使用snake_case作为表列名.如何以下面的getter工作方式覆盖这个假设? public function getFooBarAttribute(){ return json_decode($this-attributes['fooBar'],true);} 解决方法 我需要先用以下内容告诫这个答案:我没有测试过这段代码;其次,我从来没
Larvel使用snake_case作为表列名.如何以下面的getter工作方式覆盖这个假设?

public function getFooBarAttribute()
{
    return json_decode($this->attributes['fooBar'],true);
}

解决方法

我需要先用以下内容告诫这个答案:我没有测试过这段代码;其次,我从来没有要求使用它.

话虽如此,在雄辩的模型上有一个静态属性:

/**
 * Indicates whether attributes are snake cased on arrays.
 *
 * @var bool
 */
public static $snakeAttributes = true;

通过将其切换为false,可以关闭模??型上属性名称和关系名称的蛇形外壳.这应该具有您正在寻找的预期结果.

如果您感兴趣,模型的source code有一个方法cacheMutatedAttributes,它在属性中运行正则表达式以检查是否存在任何突变,如果匹配则通过以下代码段运行.

if (static::$snakeAttributes) {
    $match = Str::snake($match);
}

由于这是一个静态属性,您可以通过更改模型本身的静态值来全局更改所有模型.否则,您可以通过覆盖所需的每个模型中的静态来基于每个模型进行此更改.要全局更改,您可以向AppServiceProvider添加类似这样的内容:

public function boot()
{
    IlluminateDatabaseEloquentModel::$snakeAttributes = false;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读