标签: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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。