0
我有以下實體:學說添加現有的外鍵模式時更新(MySQL的)
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問題消失。
我應該在我的實體中引入更改嗎,還是它是教條的錯誤?
嘗試使用postgresql – fcpauldiaz
使用Postgresql,此示例代碼可正常工作。問題僅限於MySQL。 – Daniel
你有什麼異常? – fcpauldiaz