关系名称从camelCase转换为snake_case

时间:2019-11-22 14:12:15

标签: laravel eloquent orm

我在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 个答案:

答案 0 :(得分:0)

如果您用这种方式定义了许多关系,可能会有点困难,但是,我在这里看到的最简单的方法是定义accessor

这里的问题是缺少address_tv键,定义一个accessor将添加该键。

因此,在您的Street模型中:

/**
 * Get the street's address_tv.
 *
 * @return object
 */
public function getAddressTvAttribute()
{
    return $this->addressTV();
}

没有测试它,但是它应该在理论上起作用。