我有一段代码可以迭代团队记录的所有相关个人资料记录(HAS_MANY)。
看起来像这样:
$team = Team::model()->findByPk(1);
$score = 0;
foreach ($team->profiles as $profile) {
$score += $profile->getScore();
}
现在我需要保留$team
变量,但由于循环,所有配置文件都将保留在profiles
属性中,并耗尽大量内存。
有没有办法安全地清理它?
我考虑过将profiles
设置为null
,但之后它显然仍然为空(我不知道其他代码是否需要稍后访问profiles
)
答案 0 :(得分:0)
就像我说的那样,在我看来你想要保留$team
变量,同时你不要,因为它使用了大量的内存......
在这种情况下,我会逐一取消它们:
for ($i=0;for ($i=0, $j = count($team->profiles); $i < $j ; ++$i ){
$score += $team->profiles[$i]->getScore();
unset($team->profiles[$i]);
}
// OR
foreach ($team->profiles as $key => $profile) {
$score += $profile->getScore();
unset($team->profiles[$key]);
}
如果您需要,可以再次从数据库中获取它们。或者将它们存储在某种临时文件中。不要以为我认为还有另一种方式。