2
我有以下一段代码将某些帖子导入到我的数据库中。它检查一个帖子是否已经存在。如果不是这样,它会创建一个新的。使用多个Doctrine实例重复行
此脚本运行在cron作业中。但是,有时它也必须手动运行。可能发生这个脚本的两个实例同时运行。发生这种情况时,将创建重复记录。我看不出为什么会这样。
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();
}
}
有人可以在这个问题上点点滴滴吗?
如果我使用'UniqueConstraintViolationException'我应该让我的实体的任何调整? – Peter
谢谢你好,答案已更新,添加detach()调用。 –