特定の投稿をデータベースにインポートするには、次のコードがあります。投稿が既に存在するかどうかをチェックします。そうでない場合は、新しいものが作成されます。複数のDoctrineインスタンスを使用して重複する行
このスクリプトはcronジョブで実行されています。ただし、手動で実行する必要がある場合もあります。このスクリプトの2つのインスタンスが同時に実行されていることがあります。これが起こると、重複レコードが作成されます。なぜこれが可能かは分かりません。
foreach ($posts as $post) {
$entity = new Post();
$entity
->setName($post->name)
->setGender($post->gender())
->setDate(new \DateTime())
;
$em = $this->getContainer()->get('doctrine')->getManager();
$checkEntity = $em->getRepository('SampleBundle:Post')->findOneBy(array(
'name' => $post->name
));
if (!$checkEntity) {
$em = $this->getContainer()->get('doctrine')->getManager();
$em->persist($entity);
$em->flush();
}
}
誰かがこの問題について少し戸惑いましたか?
iは 'UniqueConstraintViolationException'は私が私のエンティティへの調整を行う必要があるでしょうか? – Peter
おかげさまで、回答が更新され、detach()呼び出しが追加されました。 –