繁体   English   中英

雄辩的多对多金额

[英]Eloquent many-to-many sum

我正在使用Eloquent与MySql数据库进行交谈。 我有一个teams表,这些tasks通过tasks_teamstasks具有多对多关系。 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()

我这是怎么了?

在Laravel论坛上找到了一个潜在的提示 (感谢bobodan!),尝试了一下并成功了。

我的解决方案:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM