繁体   English   中英

Laravel OrderBy关系计数,但是关系中的属性是特定的

[英]Laravel OrderBy relationship count, but where an attribut in the relationship is something specific

我有一个叫笑话的桌子和一个叫票的桌子。 笑话有很多票。 在我的投票表上,我有一个称为投票的属性。 投票可以是1或0。1表示赞成,0表示反对。 在我的系统中,我想让用户过滤以投票最多的笑话。 我的问题是我如何才能以最多的票数来订购我的笑话。

对于一个笑话,我的得票数是这样的:

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

但我不知道如何计算OrderBy关系(其中表决票数= 1)。

这可能是很长的路要走,但是应该可以:

步骤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'));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM