ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-06-11 19:16:48  阅读:166  来源: 互联网

标签:php naming laravel laravel-5


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()
{
    \Illuminate\Database\Eloquent\Model::$snakeAttributes = false;
}

标签:php,naming,laravel,laravel-5
来源: https://codeday.me/bug/20190611/1220439.html

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有