使用 Doctrine,我有 2 个类它们之间的关系是 OneToMany/ManyToOne:
>> ZipGroup Class
/**
* @ORM\OneToMany(targetEntity="License", mappedBy="zipGroup")
*/
protected $licenses;
>> License Class
/**
* @ORM\ManyToOne(targetEntity="ZipGroup", inversedBy="licenses")
* @ORM\JoinColumn(name="zipGroup_id", referencedColumnName="id", onDelete="SET NULL")
*/
protected $zipGroup;
在我的单元测试期间,我验证当我删除一个 zipgroup 时,它在许可证中正确设置为 null。问题是,当我从存储库加载许可证时,似乎我得到了一个虚拟的空对象(没有 ID)而不是 NULL。也许它是一个缓存版本?
...
$this->_em->remove($zipGroup);
$this->_em->flush();
$zipGroup = $this->_em->getRepository("BarcodePhpBundle:ZipGroup")->findOneByName("ZipGroupName");
$this->assertEquals(NULL, $zipGroup);
// License is NOT removed
$license = $this->_em->getRepository("BarcodePhpBundle:License")->findOneByPrice(25);
$this->assertEquals(25, $license->getPrice());
// BUG HERE, that value is not null, but I get an dummy object
$this->assertEquals(NULL, $license->getZipGroup());
查看数据库,该行是 NULL,但 Doctrine 并没有说 NULL ......
任何的想法?
看起来像这个问题: 如何在 symfony 1.4 中正确处理相关的空对象