2015-03-08 9 views
1

В моем объекте изображения у меня есть атрибут изображения. (Другие атрибуты: alt, style и т. Д.). Я заметил, что атрибут не был установлен как nullable = false. Я решил изменить это, и после выполнения обновления схемы доктрины я заметил, что столбец image_id по-прежнему установлен как обнуляемый.В Symfony2/Doctrine: установка внешнего ключа, чтобы не было нуля, кажется невозможным в отношениях один к одному

Это привело меня к переосмыслению моего дизайна и установлению объекта «Изображение» вместо объекта Image. Я попробую еще раз. Обычно я избегаю классового наследования с моими связанными с файлами объектами в Доктрине, потому что это вызывает слишком много проблем.

Однако я хотел бы знать. Ожидается ли поведение от доктрины? Так что мои отношения «один к одному» были установлены как обнуляемые. Нельзя ли сделать их недействительными? Это имело бы смысл, поскольку два тесно связанных объекта могут быть лучше, чтобы быть одним объектом. Однако я бы подумал, что такая озабоченность должна быть оставлена ​​по выбору разработчика. Как и в моем случае, поскольку я не желаю использовать наследование для объекта изображения.

Официальная документация на самом деле не является явной, хотя все примеры показывают недействительные внешние ключи.

Вот код:

/** 
    * @var 
    * 
    * @ORM\OneToOne(targetEntity="AnyRoutes\SiteBundle\Entity\Image", cascade={"persist", "remove"}) 
    * @@ORM\JoinColumn(name="image_id", referencedColumnName="id", nullable=false) 
    */ 
    private $image; 

ответ

1
@@ORM\JoinColumn(name="image_id", referencedColumnName="id", nullable=false) 

проверить, если удаление избыточных @ в @@ ORM \ поможет

+0

Да это сделал ... Спасибо большое. Я становлюсь слепым, как крота! Я удивлен, что Doctrine позволяет мне обновлять схемы, не выдавая сообщение об ошибке синтаксиса. – user3208611

+0

@ user3208611, потому что в большинстве случаев @ORM \ JoinColumn является необязательным и имеет разумные значения по умолчанию, поэтому он не нужен. http://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html#one-to-one-unidirectional – LPodolski