Доктрина 2: Странное поведение При обработке пакетных вкладых объектов, которые ссылаются на другие объекты

Я пробую обработку партии Метод описан здесь: 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 \Entity\User;
        $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 () также $ Роль отсоединяется и для каждых 20 пользователей новая роль с новым идентификатором Создано, что не то, что я хочу

Есть ли обходной путь для этой ситуации? Только один, который я мог бы сделать работу, - это получить объект роли пользователя каждый раз в петле

Спасибо

6
задан luiges90 17 June 2013 в 03:59
поделиться