[英]Eloquent many-to-many sum
我正在使用Eloquent與MySql數據庫進行交談。 我有一個teams
表,這些tasks
通過tasks_teams
與tasks
具有多對多關系。 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.