使用 Doctrine symfony2更新数据库中多个记录的最佳方法是什么?
我收到了必须更新的记录ID数组。
我想将每个索引的索引从接收到的数组分配给show_order列。
因此,如果我收到数组$ array = array(22,1,5,10),那么我想做
$i = 0;
foreach($array as $a) {
$record = $this->getDoctrine->getRepository('AcmeBundle:SomeEntity')->findOneById($a);
if ($record != null) $record->setOrder($i++);
}
$this->getDoctrine()->getEntityManager()->flush();
但这是一种可怕的方式,因为对于每条记录我都执行一个SELECT,所以查询数为O(n)。
如何做得更好?
最佳答案
就像是...
foreach ($repo->findById($ids) as $obj) {
$obj->setOrder(array_search($obj->getId(), $ids));
}
$em->flush();
关于optimization - Symfony-更新多个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8764029/