所以我有两张桌子:
1. Products - id, title, description, price, category
2. Reviews with id, user_id, rating, product_id
我正在努力开发一家商店。因此,在每个产品页面中,我都有一个表单,用户可以在其中提交评论,给出1-5颗星。在索引页面上,所有产品都显示标题,描述,类别,价格,我想显示每个产品的平均评级。我已按如下方式设置关系:
Products -> hasMany(review)
Review -> belongsTo(user)
Review -> belongsTo(product)
User -> hasMany(review)
如何对数据库进行interogate并显示索引上每个产品的平均评分?我在这里找到了一些解决方案,但我无法使其发挥作用 P.S:在Review表中插入的每一个都是正确的,我只需要为每个产品显示它。提前谢谢!
答案 0 :(得分:1)
如果没有Eloquent,它会是这样的,你能确保输出一些东西吗?
$reviews = Product::find($id)->reviews;
$avg = 0;
foreach($reviews as $rev){
$avg += $rev->rating;
}
return round($avg/count($reviews));
有了Eloquent,它就像是:
$product = Product::find($id);
$avg = $product->reviews()->avg('rating');
return $avg;