optimization - Symfony-更新多个记录

标签 optimization doctrine symfony

使用 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/

相关文章:

ruby-on-rails - 你如何做有限制的急切加载?

mysql - 顺序索引键有什么好处?我有多少回旋余地?

asp.net - ASP.net 的运行时页面优化器 - 有什么意见吗?

java - 哪种编程练习更快?

symfony1 - 在 schema.yml 中设置 Doctrine_Collection 键映射属性

php - 禁用项目时如何在 Symfony 中迁移 Doctrine 数据库

php - 不将重复项插入 MySQL DB - Doctrine 和 Symfony2

symfony - 使用路径链接表单标签

symfony - 如何在本地安装现有的 Symfony 项目?

Symfony2 - 将当前登录的用户注入(inject)监听器