原则在模式更新时添加现有外键 (mysql)



我有以下实体:

答.php

<?php
namespace AppBundleEntity;
use DoctrineORMMapping as ORM;
/**
 * @ORMTable(name="a")
 * @ORMEntity() 
 */
class A
{
    /**
     * @ORMColumn(name="id", type="integer")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * One Cart has One Customer.
     * @ORMOneToOne(targetEntity="B", inversedBy="a")
     * @ORMJoinColumn(name="b_id", referencedColumnName="id")
     */
    private $b;
    /**
     * @ORMOneToOne(targetEntity="C", inversedBy="a")
     * @ORMJoinColumn(name="c_id", referencedColumnName="id")
     */
    private $c;
    /**
     * @ORMManyToOne(targetEntity="D", inversedBy="a")
     * @ORMJoinColumn(name="d_id", referencedColumnName="id")
     */
    private $d;
}

B.php

<?php
namespace AppBundleEntity;
use DoctrineORMMapping as ORM;
/**
 * @ORMTable(name="b")
 * @ORMEntity()
 */
class B
{
    /**
     * @ORMColumn(name="id", type="integer")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @ORMOneToOne(targetEntity="A", mappedBy="b")
     */
    private $a;
}

C.php

<?php
namespace AppBundleEntity;
use DoctrineORMMapping as ORM;
/**
 * @ORMTable(name="c")
 * @ORMEntity()
 */
class C
{
    /**
     * @ORMColumn(name="id", type="integer")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @ORMOneToOne(targetEntity="A", mappedBy="c")
     */
    private $a;
}

D.php

<?php
namespace AppBundleEntity;
use DoctrineORMMapping as ORM;
/**
 * @ORMTable(name="d")
 * @ORMEntity()
 */
class D
{
    /**
     * @ORMColumn(name="id", type="integer")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @ORMOneToMany(targetEntity="A", mappedBy="d")
     */
    private $a;
}

我执行命令:

php bin/console doctrine:database:create
php bin/console doctrine:schema:update --force
php bin/console doctrine:schema:update --dump-sql

最后一个命令打印:

ALTER TABLE a ADD CONSTRAINT FK_E8B7BE43296BFCB6 FOREIGN KEY (b_id) REFERENCES b (id);

但是这个约束是之前添加的,所以我不能使用

php bin/console doctrine:schema:update --force

两次没有错误。

仅当我使用 MySQL 时,才会发生此行为。当我删除MySQL并安装MariaDB问题时,问题消失了。

我应该在我的实体中引入更改,还是教义的错误?

这似乎是一个错误。尝试使用 DoctrineMigrations 捆绑包,以便在应用迁移类之前对其进行控制。

相关内容

  • 没有找到相关文章