Ошибка при сохранении отношения один-к-одному, ведьма не может быть обнуляемой: нарушение ограничения целостности: 1048 Столбец 'directory_root_id' не может быть пустым - PullRequest
0 голосов
/ 29 мая 2019

У меня есть взаимно-однонаправленное отношение (nullable = false) между двумя объектами.Это выглядит очень просто, но я получил ошибку (после успешного заполнения моих данных слушателем) во время операции flush ().Мой слушатель автоматически создает и заполняет это отношение (и оно отлично работает!), Но я получаю «Нарушение ограничения целостности: 1048 Столбец 'directory_root_id' не может быть пустым".

Я использую черту для описания ORM.Может ли это быть причиной?

Я добавил некоторый текст для печати на терминале (в преперсисте и постперсисте), чтобы подтвердить, что моя сущность действительно содержит связанную сущность, и это нормально.Терминал возвращает:

-> ПРЕДУПРЕЖДЕНИЕ: незадолго до сброса контролируется, если в сущности «Министр транзитной экологии и пасьянсов» существует «API \ FileBundle \ Entity \ DirectoryRoot»: ОК !!!

Черта:

trait SysDir {

    /**
     * @ORM\OneToOne(targetEntity=DirectoryRoot::class, cascade={"persist", "remove"})
     * @ORM\JoinColumn(name="directory_root_id", referencedColumnName="id", nullable=false)
     * @Annot\AttachSysDirs() --> my listener works fine
     */
    protected $rootdirectoryown;

    /**
     * Set rootdirectoryown
     * @param DirectoryRoot $rootdirectory
     * @param boolean $inverse = true
     * @return self
     */
    public function setRootdirectoryown(DirectoryRoot $rootdirectory, $inverse = true) {
        if($this->rootdirectoryown !== $rootdirectory) {
            if($this->rootdirectoryown instanceOf DirectoryRoot) $this->removeRootdirectoryown();
            $this->rootdirectoryown = $rootdirectory;
            if($inverse) $rootdirectory->setOwner($this, false);
        }
        return $this;
    }

    /**
     * Get rootdirectoryown
     * @return DirectoryRoot | null
     */
    public function getRootdirectoryown() {
        return $this->rootdirectoryown;
    }

Мой абстрактный класс:

abstract class ModelTier extends BaseUser {

    use \ModelApi\NestedBundle\Traits\SysDir;

В моей сущности сеттер работает (заполняется моим слушателем), и до того, как сохранится,setter возвращает сущность DirectoryRoot, но во время flush () я получил ошибку SQL:

-> Возникла исключительная ситуация при выполнении INSERT INTO modeltier (функциональность, softdeleted, включена, fa_icon, microtimeid, созданный, обновленный, name, slug, title, menutitle, description, color, ytlinks, fileentity_id, avatar_id, language_id, directory_root_id, directory_system_id, class_name) ЗНАЧЕНИЯ (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) 'с параметрами [null, null, 1, "fa-building", "@ 155912345440193900", "2019-05-29 11:50:55 ", null," Экологический переходный период и пасьянс "," Мини-переходный эколог "ique-et-solidaire "," Экологическая политика и солидарность переходов "," Экологическая и солидарность переходов ", нуль," #BBBBBB "," [] ", ноль, 2, 7, ноль, ноль"partenaire "]:

SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец 'directory_root_id' не может быть пустым

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...