更新架构时,Doctrine添加现有的外键(mysql)

时间:2017-05-27 11:04:54

标签: mysql symfony doctrine-orm

我有以下实体:

  

a.php只会

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table(name="a")
 * @ORM\Entity() 
 */
class A
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * One Cart has One Customer.
     * @ORM\OneToOne(targetEntity="B", inversedBy="a")
     * @ORM\JoinColumn(name="b_id", referencedColumnName="id")
     */
    private $b;

    /**
     * @ORM\OneToOne(targetEntity="C", inversedBy="a")
     * @ORM\JoinColumn(name="c_id", referencedColumnName="id")
     */
    private $c;

    /**
     * @ORM\ManyToOne(targetEntity="D", inversedBy="a")
     * @ORM\JoinColumn(name="d_id", referencedColumnName="id")
     */
    private $d;
}
  

B.php

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table(name="b")
 * @ORM\Entity()
 */
class B
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\OneToOne(targetEntity="A", mappedBy="b")
     */
    private $a;
}
  

C.php

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table(name="c")
 * @ORM\Entity()
 */
class C
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\OneToOne(targetEntity="A", mappedBy="c")
     */
    private $a;
}
  

D.php

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table(name="d")
 * @ORM\Entity()
 */
class D
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\OneToMany(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时,问题就消失了。

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

1 个答案:

答案 0 :(得分:1)

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