Laravel为模型添加功能

时间:2014-08-24 10:30:03

标签: php ruby-on-rails laravel model eloquent

我想在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中获得此行为?

1 个答案:

答案 0 :(得分:5)

使用方法名称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