Doctrine2 & Symfony2: сбросить значение идентификатора при сохранении в цикле foreach - PullRequest
1 голос
/ 14 декабря 2011

См. Следующий код:

$passwords = array('aaaa', 'bbbb', 'ccccc', 'dddd', 'eeeee');

$em = $this->getDoctrine()->getEntityManager();
$foo = new Foo();
$foo->setName('Joe Bloggs');
$foo->setTitle('Mr');
foreach ($passwords as $password) {
    $foo->setPassword($password);
    $em->persist($foo);
    $em->flush();
}

Здесь, когда я пытаюсь сохранить объект $foo, я надеюсь сохранить его X раз, где X - длина $passwords, однако он просто вставляет значение один раз, а затем обновляет другое 4 раза.

Кто-нибудь знает, как мне этого добиться, чтобы он вставлял запись 5 раз.

Спасибо

1 Ответ

3 голосов
/ 14 декабря 2011

Выбор между созданием и обновлением производится при идентификации объекта:

  • новый объект => создание
  • существующий объект=> update

Итак, не пытайтесь оптимизировать обработку, не повторяя setName и setTitle, но вы можете выполнить flush () только один раз;):

$passwords = array('aaaa', 'bbbb', 'ccccc', 'dddd', 'eeeee');

$em = $this->getDoctrine()->getEntityManager();
foreach ($passwords as $password) {
    $foo = new Foo();
    $foo->setName('Joe Bloggs');
    $foo->setTitle('Mr');
    $foo->setPassword($password);
    $em->persist($foo);
}
$em->flush();
...