Doctrine orm 不会删除Doctrine2关联实体
目前,在使用两个实体并将它们映射到自己的关联实体时,Doctrine2存在问题。我在这里完全复制了这篇博客文章中的实体类: 在我的示例中,我使用了一个PHPUnit测试,在该测试中,我按照以下方式播放场景。但与博客帖子不同的是,我的关联实体没有被删除!phpunit测试用例失败了,我希望公司只剩下一份工作,而剩下的两个人一个也没有 这发生在我自己的项目中,我试图将示例正确地映射到我的案例中,但示例也不起作用。是否对禁止删除协会实体的原则进行了任何更改Doctrine orm 不会删除Doctrine2关联实体,doctrine-orm,associations,Doctrine Orm,Associations,目前,在使用两个实体并将它们映射到自己的关联实体时,Doctrine2存在问题。我在这里完全复制了这篇博客文章中的实体类: 在我的示例中,我使用了一个PHPUnit测试,在该测试中,我按照以下方式播放场景。但与博客帖子不同的是,我的关联实体没有被删除!phpunit测试用例失败了,我希望公司只剩下一份工作,而剩下的两个人一个也没有 这发生在我自己的项目中,我试图将示例正确地映射到我的案例中,但示例也不起作用。是否对禁止删除协会实体的原则进行了任何更改 $entityManager = $
$entityManager = $this->entityManager;
$personRepository = $entityManager->getRepository(Person::class);
$companyRepository = $entityManager->getRepository(Company::class);
// Setup the person and company
$person = new Person();
$person->setName('Person 1');
$company = new Company();
$company->setName('Company 1');
$entityManager->persist($person);
$entityManager->persist($company);
$entityManager->flush();
// Create the job to connect Person 1 and Company 1
$job = new Job();
$job->setStartedOn(new \DateTime('01-10-2009'))
->setMonthlySalary(10000);
$person->addJob($job);
$company->addJob($job);
$entityManager->flush();
// Assert that both the company and the person have one job
$entityManager->clear();
/* @var $person Person */
$person = $personRepository->findOneBy(['id' => 1]);
/* @var $company Company */
$company = $companyRepository->findOneBy(['id' => 1]);
$this->assertCount(1, $person->getJobs());
$this->assertCount(1, $company->getJobs());
// Add another person to the company
$person = new Person();
$person->setName('Person 2');
$job = new Job();
$job->setStartedOn(new \DateTime('16-02-2006'))
->setMonthlySalary(10000); // He wishes!
$person->addJob($job);
$company->addJob($job);
$entityManager->persist($person);
$entityManager->flush();
// Assert that the company now has two jobs and each person one
$entityManager->clear();
/* @var $personOne Person */
$personOne = $personRepository->findOneBy(['id' => 1]);
/* @var $personTwo Person */
$personTwo = $personRepository->findOneBy(['id' => 2]);
/* @var $company Company */
$company = $companyRepository->findOneBy(['id' => 1]);
$this->assertCount(2, $company->getJobs());
$this->assertCount(1, $personOne->getJobs());
$this->assertCount(1, $personTwo->getJobs());
// Now remove the job from the Person Two
$job = $person->getJobs()[0];
$personTwo->removeJob($job);
$entityManager->flush();
// Assert that the company now has one jobs and person two none
$entityManager->clear();
/* @var $personOne Person */
$personOne = $personRepository->findOneBy(['id' => 1]);
/* @var $personTwo Person */
$personTwo = $personRepository->findOneBy(['id' => 2]);
/* @var $company Company */
$company = $companyRepository->findOneBy(['id' => 1]);
$this->assertCount(1, $company->getJobs());
$this->assertCount(1, $personOne->getJobs());
$this->assertCount(0, $personTwo->getJobs());
提前感谢:-)我认为这篇文章可能有点误导甚至不正确。明确地从个人和公司中删除作业,看看会发生什么。即使使用
$personTwo->removeJob($job)$公司->删除作业($job)代码>作业的实际大小仍然是2,而不是预期的1:-(您将需要执行一个显式的$em->remove($job);只有在删除个人或公司实体时,级联功能才会起作用。