我想在Laravel模型中添加一个函数,就像我在Rails中习惯的那样。
例如:
class Person < ActiveRecord::Base
def name
"#{firstname} #{lastname}"
end
end
当我尝试在Laravel中使用相同的方法时,我得到以下异常:
Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation
如何在Laravel中获得此行为?
答案 0 :(得分:5)
使用方法名称getXXXAttribute:
在模型中创建一个Accessorclass Person extends Eloquent {
public function getNameAttribute($value)
{
return $value->firstname . ' ' . $value->lastname;
}
}
然后您可以使用
在模型中引用它$person->name
如果你想使用像full_name这样的名字,请注意蛇案例/驼峰案例差异:在方法名称中使用驼峰案例
class Person extends Eloquent {
public function getFullNameAttribute($value)
{
return $value->firstname . ' ' . $value->lastname;
}
}
但需要访问时的蛇案
$person->full_name