【发布时间】:2016-04-12 06:20:36
【问题描述】:
我是 Laravel 和 Eloquent 的新手。我的数据库中有用户、产品和投票表。用户可以对产品进行投票(0 到 5),因此这是一种“多对多”关系,投票表就像一个支点:
- 用户:ID、姓名、电子邮件、密码
- 产品: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');
}
因此,John 可以对产品 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 做到这一点?我的映射对吗?
【问题讨论】:
标签: php mysql laravel laravel-5 eloquent