1
我是Laravel的新手&雄辩。我的数据库中有用户,产品和投票表。用户可以投票(0-5)的产品,因此它是一个“多对多”的关系,与投票表像个支点:QueryBuilder:数据透视表的总和值
- 用户:ID,姓名,电子邮件,密码
- 产品:编号,名称,型号,品牌
- 投票:USER_ID,PRODUCT_ID,投票
我映射这个模式是这样的:
// User model:
public function product_votes()
{
return $this->belongsToMany('App\Product', 'votes')->withPivot('vote');
}
// Product model:
public function product_votes()
{
return $this->belongsToMany('App\User', 'votes')->withPivot('vote');
}
所以乔hn可以在产品X上投5,在产品Y上投0。Bob可以在产品X上投2,在产品Y上投3,等等......
我想查询所有产品,的每一个人。例如:
SELECT p.*, (SUM(v.vote)/COUNT(*)) as votes FROM products p INNER JOIN votes v on v.product_id = p.id GROUP BY p.id
我该怎么用QueryBuilder做到这一点?我的地图是正确的?
就是这样!感谢toSql()提示。 – aseolin