【问题标题】:Relation name converting from camelCase to snake_case从 camelCase 转换为 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'];

这给我带来了很多问题。有没有办法返回旧名称转换?

【问题讨论】:

    标签: laravel eloquent orm


    【解决方案1】:

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

    您的问题是缺少address_tv 键,定义accessor 将添加该键。

    所以在你的Street 模型中:

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

    没有测试,但理论上应该可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 2017-11-28
      • 2022-01-25
      • 2012-03-20
      • 2010-11-13
      • 1970-01-01
      相关资源
      最近更新 更多