【发布时间】:2015-07-04 10:42:28
【问题描述】:
我正在使用 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(); 对它们进行降序排序
但是如何获得喜欢的总和?
【问题讨论】:
-
附带说明,我认为您可能希望在问题表中创建一个
like_counter列,以保留当前的喜欢和不喜欢的总数。这是一种非规范化,但随着数据库的增长可能会快得多。 -
在
->sum('likes')之后添加->get(); -
给我以下错误“在非对象上调用成员函数 get()”@evans_murithi
-
如果我添加
like_counter@CatoMinor 列,我将不得不进行如此多的更改 -
试试这个
$questions=Question::leftJoin('votes', 'questions.id', '=', 'votes.id_question')->sum('likes')->get();,不带group by,看看它是否返回一些东西
标签: php mysql database laravel eloquent