2013-11-15 105 views
0

我使用Eloquent與我的MySql數據庫交談。我有一個teams的表,它與tasks通過tasks_teams有多對多的關係。 tasks有一列叫做points。當團隊完成任務時,他們可以獲得積分。雄辯多對多

我想給團隊對象一個方法來返回團隊贏得的總積分。此查詢的SQL是這樣的:

SELECT SUM(points) FROM tasks_teams, tasks WHERE 
    team_id = 1 
AND tasks_teams.task_id = tasks.id; 

這是我Team型號:

class Team extends Illuminate\Database\Eloquent\Model { 
    protected $table = 'teams'; 

    public function tasks() { 
     return $this->belongsToMany('Task', 'tasks_teams'); 
    } 
} 

我想這個方法添加到Team,但它不工作:

public function points() { 
    return $this->tasks->sum('points'); 
} 

但我得到這個:

Fatal error: Call to undefined method Illuminate\Database\Eloquent\Collection::sum() in [...]/Models/Team.php on line 19

我在這裏錯了什麼?

回答

0

找到了potential hint at the Laravel Forums(謝謝bobodan!),試了一下它就行了。

我的解決辦法:

public function points() { 
    return $this->belongsToMany('Task', 'tasks_teams')->sum('points'); 
}