Доктрина необязательное сопоставление OneToOne - PullRequest
7 голосов
/ 29 июля 2011

Я пытаюсь создать дополнительное отображение OneToOne в Doctrine.

У меня есть таблица со всеми доступными городами и почтовыми индексами (эту таблицу не следует изменять), и у меня есть таблица с адресами и сопоставленным городом. Но иногда я не хочу добавлять город в свой адрес в начале (возможно, позже). Но когда я не добавляю город к адресу, персистентность на адресе дает мне исключение отражения, потому что нет такого объекта, как «ноль», который должен быть объектом де Сити.

Я не хочу каждый раз добавлять пустой город в базу данных, потому что ничего не должно быть добавлено или удалено в таблицу городов.

Есть предложения? Или чего мне не хватает?

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

Возможные решения, которые я рассмотрел:

  • Создайте пустой объект города в БД и всегда присваивайте его вновь созданным объектам Address (может привести к большим накладным расходам)
  • Создайте отношение ManyToMany с массивом городов, чтобы можно было добавить ноль или более городов (я могу ограничить множество городов в моем объекте Address), но тогда мне нужна таблица сопоставления ...

1 Ответ

16 голосов
/ 17 марта 2012

Просто добавьте nullable=true к @JoinColumn аннотации

...