Laravel 在雄辩的ORM中,如何定义用户和点之间的关系
我有三张桌子:Laravel 在雄辩的ORM中,如何定义用户和点之间的关系,laravel,eloquent,Laravel,Eloquent,我有三张桌子: 用户-用于存储用户 用户点-用于用户和点之间的关联(仅具有用户id和点id) 用于描述积分的积分(id、金额、描述) 我如何定义它们之间的关系?我试过了 public function points(){ return $this->belongsToMany('\App\Point', 'user_point'); } 但当我这么做的时候 return $user->points()->sum('amount'); 它只返回一个 编辑: 起
- 用户-用于存储用户
- 用户点-用于用户和点之间的关联(仅具有用户id和点id)
- 用于描述积分的积分(id、金额、描述)
public function points(){
return $this->belongsToMany('\App\Point', 'user_point');
}
但当我这么做的时候
return $user->points()->sum('amount');
它只返回一个
编辑:
起初我试着这样做,因为这样做更有意义:
public function points(){
return $this->hasMany('\App\Point');
}
但是它不起作用
SUM
是一个聚合函数,因此它应该只返回一行
$user->points
将是附加到该用户的点的集合
$user->points()
是一个查询,您可以对其执行额外的工作(即$user->points()->whereSomething(true)->get()
)。正如用户ceejayoz指出的那样,使用user->points()
将返回一个生成器,您可以对其执行额外的工作。我相信在上面使用sum()
可以查看返回的第一行,这就是您所指出的实际发生的情况
很可能,您真正想要做的是$user->points->sum('amount')代码>
这将得到整个集合中该列的总和。嘿,我的$user变量是一个选定的用户,因此如果我想得到他的点数总和,我将执行$user->points()->sum('amount');我所说的1是指错误的和,不是一行。我的问题是-它只找到user_id=7和point_id=1,但我想要user_id=7和所有point_id