我想要实现的是在我的数据库中我有一个名为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函数中将属性更改为我想要使用的名称的别名,以便稍后我可以更改它。我不知道那会有多好......
任何想法? 非常感谢
答案 0 :(得分:13)
您可以使用Accessors / Mutators轻松完成。
class Channel extends Eloquent {
public function getNameAttribute()
{
return $this->attributes['channel'];
}
public function setNameAttribute($value)
{
$this->attributes['channel'] = $value;
}
}