Symfony 2 + Doctrine:如何压制SQLSTATE [23000]:完整性约束违规:1062重复条目

Ton*_*nov 4 php mysql doctrine symfony

我查了几篇帖子,但找不到合适的解决方案.

我的问题不仅仅是简单的:

我有一个实体说id,urltitle.URL应该是唯一的(在MySQL PDO中).我已经成功创建了实体和架构,没有任何问题.现在,当我走一些记录时,我会打电话persist()给每一个,最后一个flush().问题是,当我尝试为URL插入重复的条目时,它给了我一个例外.怎么压抑它?

当插入重复条目时,它应该跳过它并插入其余条目.不需要事件,ON UPDATE语句,触发器和所有那些花哨的东西.

我已经尝试捕获由persist或引发的任何异常flush(),但似乎无法正确地执行它.

欢迎任何想法,谢谢!

编辑:在这里找到我的解决方案:Symfony2 Controller不会捕获异常

ihs*_*san 12

在Symfony 2.1+中,使用\Doctrine\DBAL\DBALException而不是使用它来捕获它\PDOException.

try {
    ...
} catch (\Doctrine\DBAL\DBALException $e) {
    // ... Error on database call
}
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记在Doctrine之前放一个反斜杠,否则你什么都不会抓到! (5认同)

fer*_*tor 6

请注意,如果您要删除具有父关系的条目,则Symfony 2.1中会抛出PDOException.但为了捕获它,你将使用ihsan建议的声明

    try {
        $em = $this->getDoctrine()->getEntityManager();
        $em->remove($entity);
        $em->flush();
    } catch(\Doctrine\DBAL\DBALException $e)
    {
        // ...
    }
Run Code Online (Sandbox Code Playgroud)