【发布时间】:2015-02-26 05:15:27
【问题描述】:
我有三张桌子:
products: id|name|description|slug|category_id|...
reviews: id|product_id|review_text|name|email|...
review_rows id|review_id|criteria|rating
评论表存储评论文本,评论作者,并有一个外部product_id键。 review_rows 表存储不同标准的评分,例如:
----------------------------------------
| id | criteria | rating | review_id |
----------------------------------------
| 1 | price | 9 | 12 |
----------------------------------------
| 2 | service | 8 | 12 |
----------------------------------------
| 3 | price | 6 | 54 |
----------------------------------------
| 4 | service | 10 | 54 |
----------------------------------------
评论行通过 review_id 外键链接到评论表。我已经建立了这样的模型关系:
Product -> hasMany -> Review
Review -> belongsTo -> Product
Review -> hasMany -> ReviewRow
ReviewRow -> belongsTo -> Review
现在我想在我的类别和产品页面上显示产品的平均评分。我怎样才能做到这一点?
我需要对每条评论的所有 reviewRows 求和和平均,然后对每条评论的所有这些求和并求平均,最终得出该产品的总体评分。这是否可以通过 Eloquent 实现,还是我需要不同的解决方案或不同的数据库设计/结构?
提前致谢!
【问题讨论】:
标签: php mysql laravel eloquent relationship