Laravel 4 Eloquent Column Alias

时间:2013-06-18 17:06:32

标签: php view laravel column-alias

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

表名是列,列名是channel

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

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

我如何修改此说

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

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

我想到的选项:

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

2)使用列别名.... laravel文档...叹息..不知道如何?

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

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

任何想法? 非常感谢

1 个答案:

答案 0 :(得分:13)

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

class Channel extends Eloquent {

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

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

}

参考