用于计算的雄辩模型方法或属性

时间:2016-01-20 18:19:08

标签: laravel eloquent

我正在寻找一种定义自定义Eloquent方法的方法,该方法仅返回基于相应数据库表中的多个列的计算。我也尝试在模型属性中设置它,但似乎都不起作用。也许我错过了一些东西,这是我到目前为止所得到的:

<?php

use Illuminate\Database\Eloquent\Model;

class Team extends Model
{
    public function difference() {
        return $this->goals_f - $this->goals_a;
    }
}

我收到的错误信息是:

Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation

1 个答案:

答案 0 :(得分:1)

您的错误让我听起来像您试图将您的方法称为属性“$team->difference。您需要将其称为:$team->difference()。如果您想要区别对待好像它是一个属性,那么你需要定义一个访问者:

public function getDifferenceAttribute(){
    return $this->goals_f - $this->goals_a;
}

然后您可以将其称为$team->difference

您还可以为模型定义受保护的$appends属性,以便随后在其JSON表示中显示差异属性:

protected $appends = ['difference'];

更多信息:https://laravel.com/docs/5.2/eloquent-mutators#accessors-and-mutators