Pat*_*ick 0 php model ruby-on-rails laravel eloquent
我想在Laravel模型中添加一个函数,就像我在Rails中习惯的那样.
例如:
class Person < ActiveRecord::Base
def name
"#{firstname} #{lastname}"
end
end
Run Code Online (Sandbox Code Playgroud)
当我尝试在Laravel中使用相同的方法时,我得到以下异常:
Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation
Run Code Online (Sandbox Code Playgroud)
我如何在Laravel中获得这种行为?
使用方法名称getXXXAttribute在模型中创建一个Accessor:
class Person extends Eloquent {
public function getNameAttribute($value)
{
return $value->firstname . ' ' . $value->lastname;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用在模型中引用它
$person->name
Run Code Online (Sandbox Code Playgroud)
如果要使用full_name这样的名称,请注意蛇案例/驼峰案例差异:在方法名称中使用camel case
class Person extends Eloquent {
public function getFullNameAttribute($value)
{
return $value->firstname . ' ' . $value->lastname;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当你需要访问它时需要蛇盒
$person->full_name
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1663 次 |
最近记录: |