В Symfony2/ Doctrine: установка внешнего ключа равным нулю кажется невозможной в отношениях один к одному

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

Это заставило меня переосмыслить свой дизайн и установить вместо него сущность Picture как расширяющуюся от сущности Image. Я попробую это дальше. Я обычно избегаю наследования классов со своими сущностями, связанными с файлами, в Doctrine, потому что это может вызвать слишком много проблем.

Однако я хотел бы знать. Это ожидаемое поведение от доктрины? До сих пор все мои отношения Один-к-одному были обнулены. Разве нельзя сделать их не обнуляемыми? Это имело бы смысл, поскольку двум тесно связанным объектам было бы лучше сделать один объект. Однако я думаю, что этот вид беспокойства должен быть оставлен на усмотрение разработчика. Как и в моем случае, так как я неохотно использую наследование образа сущности.

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

Вот код:

/**
     * @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\

Другие вопросы по тегам