显示具有相同ID和记录且没有评级的每条记录的平均评级

时间:2018-01-11 14:50:26

标签: php sql laravel

我希望显示每个记录的平均评分和记录,而foreach循环没有评分。我的问题是我的代码只显示有评级的记录。以下是我的代码。

$packages = DB::table('packages')
                ->join('comments', function($join){
                    $join->on('comments.package_id', '=', 'packages.package_id');
                })
                ->join('agents', function($join){
                    $join->on('packages.agent_id', '=', 'agents.id');
                })
                ->select('comments.*', 'packages.*', 'agents.fname', 'agents.lname', 'agents.photo as agent_photo', 
                        DB::raw('AVG(rating) as ratings_average'))
                ->groupBy('comments.package_id')
                ->orderBy('packages.created_at', 'desc')
                ->paginate(8);

1 个答案:

答案 0 :(得分:0)

 $packages = DB::table('packages')
                ->leftJoin('comments', function($join){
                    $join->on('comments.package_id', '=', 'packages.package_id');
                })
                ->join('agents', function($join){
                    $join->on('packages.agent_id', '=', 'agents.id');
                })
                ->select('comments.*', 'packages.*', 'agents.fname', 'agents.lname', 'agents.photo as agent_photo', 
                        DB::raw('AVG(rating) as ratings_average'))
                ->groupBy('comments.package_id')
                ->orderBy('packages.created_at', 'desc')
                ->paginate(8);

我解决了我的问题,我刚刚将inner join更改为left join