在Laravel中,您可以使用Eloquent来结果:
User::chunk(200, function($users)
{
foreach ($users as $user)
{
//
}
});
Doctrine2中的等价物(假设是Symfony2实体存储库)?
答案 0 :(得分:0)
我不确定它是否具有确切的块功能,但是为了处理大量记录,您可能希望查看batch processing in doctrine。
答案 1 :(得分:0)
您可以创建查询的可迭代结果。并逐个处理数据。
$batchSize = 20;
$i = 0;
$q = $em->createQuery('select u from MyProject\Model\User u');
$iterableResult = $q->iterate();
foreach ($iterableResult as $row) {
$user = $row[0];
$user->increaseCredit();
$user->calculateNewBonuses();
if (($i % $batchSize) === 0) {
$em->flush(); // Executes all updates.
$em->clear(); // Detaches all objects from Doctrine!
}
++$i;
}
$em->flush();
在此处查看更多内容:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/batch-processing.html