5

我想要实现的是在我的数据库中我有一个名为 channel 的表我正在使用 laravel 的 eloquent 类从表中访问这些属性我面临的问题是

表名是column,列名是channel

所以访问该属性时看起来像这样。

User::find(1)->channel->channel

我该如何修改这个说

User::find(1)->channel->name

我们无法更改数据库中的表名。

我想到的选项:

1)为需要更改列的表创建视图。太乱了...

2)使用列别名.... laravel 文档...叹息.. 不知道怎么做?

3)使用带有 create_function 的属性集来调用 this->channel 但我很确定它不会工作,因为 laravel 正在使用动态属性。当它填写在数组中时,我很确定它会将其更改为列的名称。

我可以在我的 belongs_to/hasOne/hasMany 函数中将属性更改为我想要使用的名称的别名,以便稍后我可以更改它。我不知道那会有多好..

有什么想法吗?非常感激

4

1 回答 1

13

您可能可以使用 Accessors / Mutators 轻松做到这一点。

class Channel extends Eloquent {

    public function getNameAttribute()
    {
        return $this->attributes['channel'];
    }

    public function setNameAttribute($value)
    {
        $this->attributes['channel'] = $value;
    }

}

参考

于 2013-06-19T13:27:16.013 回答