【发布时间】:2020-06-24 19:18:19
【问题描述】:
我正在努力让一个集合上的 groupby 起作用 - 我还没有得到这个概念。
我正在为一个玩家从表中提取结果集合,雄辩的集合将包含如下数据:
['player_id'=>1, 'opposition_id'=>10, 'result'=>'won', 'points'=>2],
['player_id'=>1, 'opposition_id'=>11, 'result'=>'lost', 'points'=>0],
['player_id'=>1, 'opposition_id'=>12, 'result'=>'lost', 'points'=>0],
['player_id'=>1, 'opposition_id'=>10, 'result'=>'won', 'points'=>2],
['player_id'=>1, 'opposition_id'=>11, 'result'=>'lost', 'points'=>0],
['player_id'=>1, 'opposition_id'=>10, 'result'=>'lost', 'points'=>0],
['player_id'=>1, 'opposition_id'=>12, 'result'=>'won', 'points'=>2],
我希望能够groupBy('opposition_id'),然后给我一个总结果数、总赢数、总输数和积分总和,最终得到这样的集合:
['opposition_id'=>10, 'results'=>3, 'won'=>2, 'lost'=>1, 'points'=>4],
['opposition_id'=>11, 'results'=>2, 'won'=>0, 'lost'=>2, 'points'=>0],
['opposition_id'=>10, 'results'=>2, 'won'=>1, 'lost'=>1, 'points'=>2]
我试图避免返回数据库来执行此操作,因为我已经获得了之前活动的结果。
我如何使用 Laravel 收集方法来做到这一点,到目前为止,我所拥有的是:
$stats = $results->groupBy('opposition_id');
我查看了map(),但还不了解解决方案的方法
谁能指点我正确的方向。
如果需要,很高兴返回数据库,但假设我可以使用已有的集合来执行此操作,而不是创建另一个查询。我在这里找到的解决方案似乎都在查询中提供了解决方案
谢谢
【问题讨论】:
标签: laravel collections