我正在尝试创建一个包含投票和评论的活动源。两个集合之间没有任何关系。获取评论:$CommentsCollection = $this->db->comments;$options = ['sort' => ['created' => -1], 'limit' => 15];$data = array ();$resultComments = $CommentsCollection->find($data, $options);要获得选票:$VotesCollection = $this->db->votes;$options = ['sort' => ['created' => -1], 'limit' => 15];$data = array ();$resultVotes = $VotesCollection->find($data, $options);现在,我如何组合这两个单独的、不相关的集合结果并按创建(日期)对它们进行排序。我认为聚合或查找不是正确的方法,因为这两个表不相关。我只想合并结果并按日期排序,以便我可以循环并将它们显示在活动源上。
2 回答
慕慕森
TA贡献1856条经验 获得超17个赞
我所做的是使用:
$finalArray = array_merge($resultComments, $resultVotes);
合并结果。然后按日期排序:
usort($finalArray, function($a, $b) { return strtotime($a['created']) - strtotime($b['created']); });
是我想多了。
牧羊人nacy
TA贡献1862条经验 获得超7个赞
无需中间收集,有两种方式。
unionWith
您可以从 4.4 版本开始使用-参考但如果你的收藏量很大的话我不推荐。
您应该在后端合并。发出两个 http 请求并对结果进行排序。因为你得到了 30 条记录,所以后端速度会很快。
- 2 回答
- 0 关注
- 120 浏览
添加回答
举报
0/150
提交
取消