我想在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中获得此行为?
使用getXXXAttribute:
方法名在模型中创建Accessor:class 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