<small id='hiMNJ'></small><noframes id='hiMNJ'>

<tfoot id='hiMNJ'></tfoot>
      • <bdo id='hiMNJ'></bdo><ul id='hiMNJ'></ul>
    1. <i id='hiMNJ'><tr id='hiMNJ'><dt id='hiMNJ'><q id='hiMNJ'><span id='hiMNJ'><b id='hiMNJ'><form id='hiMNJ'><ins id='hiMNJ'></ins><ul id='hiMNJ'></ul><sub id='hiMNJ'></sub></form><legend id='hiMNJ'></legend><bdo id='hiMNJ'><pre id='hiMNJ'><center id='hiMNJ'></center></pre></bdo></b><th id='hiMNJ'></th></span></q></dt></tr></i><div id='hiMNJ'><tfoot id='hiMNJ'></tfoot><dl id='hiMNJ'><fieldset id='hiMNJ'></fieldset></dl></div>

      1. <legend id='hiMNJ'><style id='hiMNJ'><dir id='hiMNJ'><q id='hiMNJ'></q></dir></style></legend>

        原则 2:在批处理插入引用其他实体的实体时出现奇怪的行为

        时间:2023-08-19

        • <tfoot id='nYXow'></tfoot>
              <tbody id='nYXow'></tbody>

                <legend id='nYXow'><style id='nYXow'><dir id='nYXow'><q id='nYXow'></q></dir></style></legend>
              1. <i id='nYXow'><tr id='nYXow'><dt id='nYXow'><q id='nYXow'><span id='nYXow'><b id='nYXow'><form id='nYXow'><ins id='nYXow'></ins><ul id='nYXow'></ul><sub id='nYXow'></sub></form><legend id='nYXow'></legend><bdo id='nYXow'><pre id='nYXow'><center id='nYXow'></center></pre></bdo></b><th id='nYXow'></th></span></q></dt></tr></i><div id='nYXow'><tfoot id='nYXow'></tfoot><dl id='nYXow'><fieldset id='nYXow'></fieldset></dl></div>

                <small id='nYXow'></small><noframes id='nYXow'>

                • <bdo id='nYXow'></bdo><ul id='nYXow'></ul>
                  本文介绍了原则 2:在批处理插入引用其他实体的实体时出现奇怪的行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在尝试此处描述的批处理方法:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/batch-processing.html

                  I am trying out the batch processing method described here: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/batch-processing.html

                  我的代码是这样的

                      $limit = 10000;
                      $batchSize = 20;
                      $role = $this->em->getRepository('userRole')->find(1);
                      for($i = 0; $i <= $limit; $i++)
                      {
                          $user = new EntityUser;
                          $user->setName('name'.$i);
                          $user->setEmail('email'.$i.'@email.blah');
                          $user->setPassword('pwd'.$i);
                          $user->setRole($role);
                          $this->em->persist($user);
                           if (($i % $batchSize) == 0) {
                               $this->em->flush();
                               $this->em->clear();
                          }
                      }
                  

                  问题是,在第一次调用 em->flush() 之后$role 被分离,对于每 20 个用户,一个具有新 id 的新角色是创建,这不是我想要的

                  the problem is, that after the first call to em->flush() also the $role gets detached and for every 20 users a new role with a new id is created, which is not what i want

                  是否有针对这种情况的解决方法?我唯一能做的就是每次在循环中获取用户角色实体

                  is there any workaround available for this situation? only one i could make work is to fetch the user role entity every time in the loop

                  谢谢

                  推荐答案

                  clear() 分离实体管理器管理的所有实体,所以 $role 也分离,并尝试持久化分离的实体会创建一个新实体.

                  clear() detaches all entities managed by the entity manager, so $role is detached too, and trying to persist a detached entity creates a new entity.

                  清除后你应该重新获取角色:

                  You should fetch the role again after clear:

                  $this->em->clear();
                  $role = $this->em->getRepository('userRole')->find(1);
                  

                  或者只是创建一个引用:

                  Or just create a reference instead:

                  $this->em->clear();
                  $role = $this->em->getReference('userRole', 1);
                  

                  这篇关于原则 2:在批处理插入引用其他实体的实体时出现奇怪的行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:Twig 和 Symfony2 - 未找到实体 下一篇:学说2:在一对多的双向关系中,如何从反面保存?

                  相关文章

                    <tfoot id='2JRlb'></tfoot>
                    <legend id='2JRlb'><style id='2JRlb'><dir id='2JRlb'><q id='2JRlb'></q></dir></style></legend>
                    1. <small id='2JRlb'></small><noframes id='2JRlb'>

                      • <bdo id='2JRlb'></bdo><ul id='2JRlb'></ul>

                      <i id='2JRlb'><tr id='2JRlb'><dt id='2JRlb'><q id='2JRlb'><span id='2JRlb'><b id='2JRlb'><form id='2JRlb'><ins id='2JRlb'></ins><ul id='2JRlb'></ul><sub id='2JRlb'></sub></form><legend id='2JRlb'></legend><bdo id='2JRlb'><pre id='2JRlb'><center id='2JRlb'></center></pre></bdo></b><th id='2JRlb'></th></span></q></dt></tr></i><div id='2JRlb'><tfoot id='2JRlb'></tfoot><dl id='2JRlb'><fieldset id='2JRlb'></fieldset></dl></div>