加入两个表并添加具有相同列ID

时间:2015-07-04 10:42:28

标签: php mysql database laravel eloquent

我正在使用Laravel 4.2
我有两个表“问题”和“投票”
在我的问题表中,我有像

这样的列
  • id
  • id_user
  • subject
  • body

在我的投票表中,我有像

这样的列
  • id
  • id_question
  • id_user
  • likes
  • dislikes

用户只能投票一次,因此每个用户的喜欢和不喜欢的值为0-1,id_question有问题表中问题的id。现在你想根据每个问题的投票数按降序排序问题。

如何总结投票并对其进行排序。这是我尝试过的,但它只显示了第一个问题的计数

$questions=Question::leftJoin('votes', 'questions.id', '=', 'votes.id_question')
            ->groupBy('questions.id')->sum('likes');

            return json_encode($questions);

获得计数后,我可以使用orderBy('likes','DESC')->get();按降序排序 但如何得到喜欢的总和?

1 个答案:

答案 0 :(得分:1)

试试这个:

$questions=Question::leftJoin('votes', 'questions.id', '=', 'votes.id_question')
    ->select(DB::raw('questions.id, SUM(votes.likes) as likes'))
    ->groupBy('questions.id'‌​)
    ->get();