如何在Eloquent ORM中定义用户和点之间的关系

时间:2015-04-06 17:45:58

标签: laravel eloquent

我有3张桌子:

  • 用户 - 用于存储用户
  • User_point - 用于用户和点之间的关联(仅包含user_id和point_id)
  • 点数(身份,数量,描述)的描述要点

如何定义这些之间的关系?我试过了

 public function points(){
    return $this->belongsToMany('\App\Point', 'user_point');
}

但是当我做的时候

return $user->points()->sum('amount'); 

它只返回一个

编辑: 起初我尝试将它变成这样,因为它更有意义:

 public function points(){
        return $this->hasMany('\App\Point');
    }

但它不起作用

2 个答案:

答案 0 :(得分:0)

SUM是一个聚合函数,因此 只返回一行。

$user->points将是附加到该用户的点集合。

$user->points()是一个您可以执行其他工作的查询(例如$user->points()->whereSomething(true)->get())。

答案 1 :(得分:0)

正如用户ceejayoz指出的那样,使用user->points()将返回一个你可以做更多工作的构建器。我相信使用sum()会查看返回的第一行,这是您所指示的实际情况。

可能,你真正想做的是$user->points->sum('amount');

这将获得整个集合的该列的总和。