one generate orm doctrine mapping one-to-one

orm - generate - Doctrine Cartografía OneToOne opcional



doctrine reference (1)

Estoy intentando crear un mapeo OneToOne opcional en Doctrine.

Tengo una tabla con todas las ciudades y códigos postales disponibles (esta tabla no se debe cambiar), y tengo una tabla con direcciones y una ciudad mapeada. Pero a veces no quiero agregar Ciudad a mi Dirección al principio (tal vez más adelante). Pero cuando no agrego una ciudad a la dirección, la persistencia en la dirección me da una excepción de reflexión porque no hay ningún objeto como ''nulo'', que debería ser el objeto de la ciudad.

No quiero agregar una ciudad vacía cada vez en la base de datos, porque no debería agregarse ni eliminarse nada en la tabla de la ciudad.

¿Alguna sugerencia? ¿O qué me estoy perdiendo?

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

Posibles soluciones que consideré:

  • Cree un objeto de ciudad vacío en el archivo db y asígnelo siempre a los objetos de direcciones creados recientemente (puede causar muchos gastos generales)
  • Cree una relación ManyToMany con una matriz de ciudades, por lo que puede haber cero o más ciudades agregadas (puedo restringir la multitud de ciudades en mi objeto Address) pero luego necesito una tabla de asignación ...

Simplemente agrega nullable=true a @JoinColumn anotación