0

Eloquent を使用して MySql データベースと通信しています。viateamsと多対多の関係を持つテーブルがあります。という列があります。チームはタスクを完了すると、ポイントを獲得します。taskstasks_teamstaskspoints

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() の呼び出し

ここで何が間違っていますか?

4

1 に答える 1

2

Laravel Forums で潜在的なヒントを見つけて(bobodan に感謝します!)、試してみたところ、うまくいきました。

私の解決策:

public function points() {
    return $this->belongsToMany( 'Task', 'tasks_teams' )->sum('points');
}
于 2013-11-15T02:26:33.710 に答える