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

问题描述

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

例如:

我的产品表

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中获得此输出?预先感谢!

解决方法

$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();

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...