【问题标题】:How to refactor php foreach using Laravel (Eloquent's) map collection function如何使用 Laravel(Eloquent 的)地图收集功能重构 php foreach
【发布时间】:2019-08-04 08:44:08
【问题描述】:
我刚刚在Refactoring Loops and Conditionals 上观看了 Adam Wathan 的视频,感觉可以在我的 Team 模型(而不是 foreach)上的 sumLeagueStats 方法中使用 map 收集方法。
我有一个关于球队 -> 联赛的关系,getLeagueStats 函数从leagues 表中获取相关球队的所有统计数据(出场、赢、平、输、支持、反对、积分)。
在sumLeagueStats 方法中,我打算使用foreach 循环并按年份循环遍历每个统计数据,并获取所有播放次数等的总和并返回它,但是看过上面的视频后,
类团队扩展模型 {
公共功能联盟()
{
返回 $this->hasMany('league');
}
公共函数 getLeagueStats($year = [2018])
{
return $this->league()->whereIn('year', [$year])->get();
}
公共函数 sumLeagueStats($year = [2018])
{
foreach {
...
返回
}
/*
* 想要返回一个带有以下内容的集合:
*
$this->getLeagueStats()->sum('played');
$this->getLeagueStats()->sum('won');
$this->getLeagueStats()->sum('drew');
$this->getLeagueStats()->sum('lost');
$this->getLeagueStats()->sum('for');
$this->getLeagueStats()->sum('against');
$this->getLeagueStats()->sum('points');
*/
}
}
我是 Laravel 的新手,所以首先要检查一下。我的怀疑是正确的,其次是寻找任何见解/资源以获取更多信息,因为文档略有缺失)。
【问题讨论】:
-
我稍微调整了代码,使其更易于理解/可读,如果有任何遗漏/不清楚,请告诉我。
-
标签:
php
laravel
eloquent
refactoring