从 camelCase 转换为 snake_case 的关系名称
Posted
技术标签:
【中文标题】从 camelCase 转换为 snake_case 的关系名称【英文标题】:Relation name converting from camelCase to snake_case 【发布时间】:2019-11-22 14:12:15 【问题描述】:我有一个关于 Illuminate Database 4.2 的旧项目,现在我尝试将其升级到 6.0,但我发现了一些奇怪的东西: 我有这样的关系:
public function addressTV()
return $this->hasMany('Billing\db\Models\AddrMapTv', 'StreetID');
在 4.2 中使用时
$list = \Billing\db\Models\Street::with(['addressTV'])->get()->toArray();
它转换为:
$list['address_tv']
没关系。
但在 6.0 中,我得到了相同的代码:
$list['address_t_v'];
这给我带来了很多问题。有没有办法返回旧名称转换?
【问题讨论】:
【参考方案1】:如果您以这种方式定义了许多关系,可能会有点困难,但是,我在这里看到的最简单的方法是定义 accessor
您的问题是缺少address_tv
键,定义accessor
将添加该键。
所以在你的Street
模型中:
/**
* Get the street's address_tv.
*
* @return object
*/
public function getAddressTvAttribute()
return $this->addressTV();
没有测试,但理论上应该可以。
【讨论】:
以上是关于从 camelCase 转换为 snake_case 的关系名称的主要内容,如果未能解决你的问题,请参考以下文章
将 Java 字符串从全部大写(由下划线分隔的单词)转换为 CamelCase(无单词分隔符)的最简单方法是啥?
将返回的 JSON 对象属性转换为(较低的第一个)camelCase
正则表达式在 Redshift 中将 CamelCase 转换为蛇形案例