Laravel 5.5通过总票数获得邮政订单

时间:2017-12-12 01:32:06

标签: php mysql laravel-5 eloquent

您好,我想获得最受欢迎的帖子,我创建了一个系统,您可以在帖子或评论上投票。 [+ 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();

1 个答案:

答案 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();