Doctrine:删除,然后坚持使用Unique Values

时间:2016-07-18 09:16:31

标签: doctrine-orm symfony

我有以下代码。 Part的代码列需要一个唯一值,因此当我remove()时会抛出一个错误,然后persist()会产生一个具有相同代码值的行。但是,应该首先删除该行,因此只有一个值。我必须在这些命令之间运行flush()吗?

        if ($existingPart) { # we found one
            if ($existingPart->getPrice() != $part->getPrice()) { # price changed
                $em->remove($existingPart); #soft-delete the old one
                $em->persist($part); # persist the new part
                $countUpdates++; # get number of updated entities
            }
        } else {
            $em->persist($part); # no existing part with same code, just add new part
            $count++; # get number of new commits    
        }                    
    }

    $em->flush();

1 个答案:

答案 0 :(得分:1)

阿。我发现了原因:我使用的是softdeletable。我需要做的是从列定义中删除唯一值标志,而不是在类注释中插入以下内容:

@UniqueEntity(fields={"deletedAt","code"})

这将检查deletedAtcode的组合是否唯一而不仅仅是字段。