Doctrine可选的OneToOne映射

jay*_*ayv 7 mapping orm doctrine one-to-one

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

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

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

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

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

我考虑的可能解决方案

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

Mac*_*ski 16

只需简单地添加nullable=true@JoinColumn注释