我有以下实体:
答.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 捆绑包,以便在应用迁移类之前对其进行控制。