您好,我想获得最受欢迎的帖子,我创建了一个系统,您可以在帖子或评论上投票。 [+ 1,-1]
投票表
整数:id - 投票ID
整数:model_id - 模型ID
string:model -model name [“App / Post”,“App / Comment”]
整数:值 - 投票值[-1,1]
现在我想得到按价值总和排序的帖子。但我陷入了沉重的困境。 这是我的实际代码,遗憾的是无法正常工作。
DB::table('posts')
->join('votes','posts.id','votes.model_id')
->groupBy('votes.model_id')
->where('model','App\Post')
->select('posts.*','sum(\'votes.value\')')
->get();
答案 0 :(得分:0)
请完整阅读手册Laravel query builder。
您需要使用原始表达式,因为它具有聚合函数。
DB::table('posts')
->join('votes','posts.id','=','votes.model_id')
->groupBy('votes.model_id')
->where('model','App\Post')
->selectRaw('posts.*, sum(votes.value) as sum_value')
->get();