我正在使用Eloquent与我的MySql数据库交谈。我有一张teams
表,与tasks
通过tasks_teams
建立了多对多关系。 tasks
有一个名为points
的列。当团队完成任务时,他们可以获得积分。
我想给Team对象一个方法来返回团队获得的总积分。此查询的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');
}
但我明白了:
致命错误:在第19行的[/] / Models / Team.php中调用未定义的方法Illuminate \ Database \ Eloquent \ Collection :: sum()
我在这里弄错了什么?
答案 0 :(得分:0)
找到了potential hint at the Laravel Forums(感谢bobodan!),尝试过它并且有效。
我的解决方案:
public function points() {
return $this->belongsToMany( 'Task', 'tasks_teams' )->sum('points');
}