Laravel 4 Eloquent Column Alias

Lpc*_*ark 5 php view column-alias laravel

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

表名是列,列名是通道

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

User::find(1)->channel->channel
Run Code Online (Sandbox Code Playgroud)

我怎么能修改这个说

User::find(1)->channel->name
Run Code Online (Sandbox Code Playgroud)

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

我想到的选项:

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

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

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

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

有什么想法吗?非常感激

Ale*_*ult 13

您可以使用Accessors/Mutators轻松完成.

class Channel extends Eloquent {

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

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

}
Run Code Online (Sandbox Code Playgroud)

参考

  • 我测试过它确实很好用.真棒! (2认同)