Я пытаюсь создать дополнительное отображение OneToOne в Doctrine.
У меня есть таблица со всеми доступными городами и почтовыми индексами (эту таблицу не следует изменять), и у меня есть таблица с адресами и сопоставленным городом. Но иногда я не хочу добавлять город в свой адрес в начале (возможно, позже). Но когда я не добавляю город к адресу, персистентность на адресе дает мне исключение отражения, потому что нет такого объекта, как «ноль», который должен быть объектом де Сити.
Я не хочу каждый раз добавлять пустой город в базу данных, потому что ничего не должно быть добавлено или удалено в таблицу городов.
Есть предложения? Или чего мне не хватает?
class Address{
/**
* @OneToOne(targetEntity="City")
* @JoinColumn(name="city_id", referencedColumnName="id")
*/
private $city = '';
Возможные решения, которые я рассмотрел:
- Создайте пустой объект города в БД и всегда присваивайте его вновь созданным объектам Address (может привести к большим накладным расходам)
- Создайте отношение ManyToMany с массивом городов, чтобы можно было добавить ноль или более городов (я могу ограничить множество городов в моем объекте Address), но тогда мне нужна таблица сопоставления ...