Doctrine可选的OneToOne映射

时间:2011-07-29 07:37:50

标签: orm doctrine mapping one-to-one

我正在尝试在Doctrine中创建一个可选的OneToOne映射。

我有一张表格,其中包含所有城市和邮政编码(不应更改此表格),并且我有一张包含地址和映射城市的表格。但有时候我不想在开始时将城市添加到我的地址(可能稍后就会)。但是当我没有向地址添加城市时,地址上的持久性会给我一个反射异常,因为没有像'null'这样的对象,它应该是de City对象。

我不希望每次都将空城添加到数据库中,因为不应该向城市表添加或删除任何内容。

有什么建议吗?或者我错过了什么?

class Address{
/**
 * @OneToOne(targetEntity="City")
 * @JoinColumn(name="city_id", referencedColumnName="id")
 */
  private $city = '';

我考虑的可能解决方案:

  • 在数据库中创建一个空的城市对象,并将其始终分配给新创建的地址对象(可能会导致大量开销)
  • 与城市数组创建ManyToMany关系,因此可以添加零个或多个城市(我可以限制我的地址对象中的众多城市),但我需要一个映射表......

1 个答案:

答案 0 :(得分:16)

只需将nullable=true添加到@JoinColumn注释

即可