【发布时间】:2021-04-14 02:26:33
【问题描述】:
我正在使用 willvincent rateable 软件包对帖子进行评分,它工作正常,并且每个帖子在每个 user_id 的评分表中都有他的评分, 所以我正在处理我想用他们的平均评分对帖子进行排序的任务,
我构建了在 phpmyadmin 上运行良好的原始 sql
SELECT *, AVG(ratings.rating) as average_rating
FROM posts
JOIN ratings ON ratings.rateable_id = posts.id
WHERE posts.user_id='2'
GROUP BY ratings.rateable_id
ORDER BY average_rating desc
但是我想把它转换成 laravel eloquent builder 的形式,我实现到现在
$postList->leftJoin('ratings', 'ratings.rateable_id', '=', 'posts.id')
->select(array('posts.*',
DB::raw('AVG(rating) as ratings_average')
))
->groupBy('posts.id')
->where('is_deleted','0')
->orderBy('ratings_average', 'DESC')
->get();
其中 $postList 包含所有带有 user_id 的帖子,但没有提供来自帖子表在线 ID 的所有数据以及平均评分,请帮助
【问题讨论】: