[英]Forget not modifying the original collection Laravel 5.7
我试图在遍历for循环时从集合中删除随机元素。 这个想法是,每次通过for循环时,可用集合中的项目都不包括在先前迭代中找到和删除的项目。 我尝试在初始收藏夹中使用“忘记”,但仍在结果中找到双打。 任何帮助,将不胜感激,谢谢!
$data = SomeModel::get();
for($i = 1; $i <= $max; $i++) {
$random = $data->random($numberToPick);
foreach($random as $option) {
$data->forget($option->id);
}
}
我在末尾dd($ data)的确确实看到选择的项目已从最终集合中删除,但是如上所述,我仍然得到一些随机数,这些随机数具有与先前迭代匹配的键。
这里的问题是,忘记将通过其索引删除该项目。 您将集合内对象的ID作为参数,但其索引与ID不同。
尝试这个:
$data = SomeModel::get()->keyBy('id');
for($i = 1; $i <= $max; $i++) {
$random = $data->random($numberToPick);
foreach($random as $option) {
$data->forget($option->id);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.