如何在 laravel 中获取所有平均评分的数据

Posted

技术标签:

【中文标题】如何在 laravel 中获取所有平均评分的数据【英文标题】:How Can i fetch all data with average rating in laravel 【发布时间】:2020-12-26 13:00:30 【问题描述】:

我想显示所有产品的平均评分。在这种情况下,我有两个表,例如 Product TableProduct Rating Table

例如:

我的产品表

ProductID  | ProductName
-------------------------
1          | ABC Product
2          | XYZ Product
3          | LMN Product

我的评分表

   ID   | ProductID  | Value
    -------------------------
    1   | 1          | 4
    2   | 1          | 5
    3   | 2          | 3

我需要这样的输出,

 [
    
     "ProductID": 1,
     "ProductName": ABC Product,
     "AverageRating": 4.5,
    ,

    
     "ProductID": 2,
     "ProductName": XYZ Product,
     "AverageRating": 3.0,    
    ,  

   
     "ProductID": 3,
     "ProductName": LMN Product,  
     "AverageRating": 0,
    

 ]

如何在 laravel 中获得此输出?提前致谢!

【问题讨论】:

这能回答你的问题吗? How to get average of column values in laravel 你使用的是什么版本的 Laravel? Laravel 框架 7.16.1 【参考方案1】:
$data = DB::table('products_table')
->select('products_table.ProductId', 
         'products_table.ProductName', 
         \DB::raw('AVG(ratings_table.value) as AverageRating')
->leftJoin('ratings_table', 'ratings_table.ProductId', 'products_table.ProductId')
->groupBy('ratings_table.ProductId')->get();

return $data->toArray();

我尚未运行此查询,但这可能会让您对您的问题有所了解。

【讨论】:

知道了,谢谢!

以上是关于如何在 laravel 中获取所有平均评分的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何让 mysql 与标签搜索一起获得平均评分?

显示 laravel 中评分最高的餐厅

在 SQL 中平均电影评分

spark示例:连接操作

Flutter - 如何计算listview上每个产品的平均评分数

SQL从另一个表中选择平均评分