Laravel为模型添加功能


Laravel add function to model

我想在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