php - Laravel Order By 关系计数,但关系中的属性是特定的

标签 php mysql eloquent laravel-5

我有一个名为“笑话”的表和一个名为“投票”的表。笑话有很多票。在我的投票表上,我有一个名为投票的属性。 vote 可以是 1 或 0。1 表示赞成,0 表示反对。在我的系统中,我想让用户过滤以查看投票最多的笑话。我的问题是如何订购获得最多赞成票的笑话。

对于一个笑话,我得到的票数如下:

 $vote_up_count = $joke->votes()->where('vote', '=', 1)->count();

但我不知道如何在投票数 = 1 的情况下进行 OrderBy 关系计数。

最佳答案

这可能是一个很长的路要走,但它应该有效:

第 1 步:获取笑话集合 $jokes

第 2 步:迭代笑话集合以获得收入关系模型$jokes->each(function ($joke){});

第 3 步:对于每个投票关系,通过仅过滤 vote == 1 的投票,获得等于 1 的投票数。 $joke->votes->filter(function ($vote) {return ($vote->vote == 1);})->count()

第 4 步:将投票数属性添加到笑话模型 $joke->count = $count

第 5 步:根据新的 count 属性 sortByDesc('count') 对整个笑话集合进行降序排序。

最终结果如下所示:

$sortedByVoteCount = ($jokes->each(function ($joke) {
        $count = ($joke->votes->filter(function ($vote) {
            return ($vote->vote == 1);
        })->count());

        $joke->count = $count;

    })->sortByDesc('count'));

关于php - Laravel Order By 关系计数,但关系中的属性是特定的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37264701/

相关文章:

php - jQuery | Ajax,如何从外部 PHP 文件中接收的数据中操作数组键?

php - 如何在 Eloquent ORM 中使用 CASE WHEN?

php - 如何制作国家/地区特定网站(和内容)?

javascript - 如何提交焦点表单

php - 如何在 Laravel 4 中批量更新

php - Laravel 多个多对多关系?

mysql - 如何使用 App Engine 从 eclipse 连接到 google cloud sql 实例?

php - Objective C - 无法查询数据库(MySQL)

sql - MySQL 查询 : Select existing months from database and complete dynamically with the rest of year's month

php - Laravel findOrFail 返回所有记录