0

[EDIT]

I fixed my issue with this trick :

Doctrine 2 OneToMany Cascade SET NULL


I'm facing an issue in my unit tests when i try to delete some entities between each tests.

I have this method :

 private function cleanEntities(?array $entities = null): void
    {
        if (!$entities) {
            $entities = [Nc::class, Chapter::class, Questionnaire::class, Audit::class];
        }

        foreach ($entities as $entity) {
            $data = static::$em->getRepository($entity)->findAll();
            foreach ($data as $element) {
                self::$em->remove($element);
            }
        }
        self::$em->flush();
    }

But in my example, in the entity "Nc", there's a foreign key pointing to the entity "Audit".

When I try do delete both, when I flush all the "remove" actions, I get an error from SQL Server stating that there'sa conflict between the "DELETE" action and the foreign key in my entity Nc.

From what I can see, the Audit has to be flushes after them all, that's why I've placed it last in the $entities array.

I'm wondering if there's an option or a way to avoid this type of conflict ?

The only solution I see, which I will do if there's no other wayn is to remove and flush the Audits after the rest, but that's not ideal at all because what if I have other entities conflicts ...

Thanks.

naspy971
  • 1,137
  • 2
  • 13
  • 31

0 Answers0