У меня проблема со многими для многих ассоциаций. У меня есть 2 объекта с именем пользователя
/**
* @ManyToMany(targetEntity="DataSiteBundle\Entity\Site", mappedBy="user")
* @ORM\JoinColumn(
* name="id_site",
* referencedColumnName="id_site",
* nullable=false,
* onDelete="CASCADE"
* )
*/
private $site;
а другой называется сайтом
/**
* @Groups({"site-read","site-write"})
* @ORM\ManyToMany(targetEntity="UserBundle\Entity\User" , inversedBy="site")
* @ORM\JoinColumn(
* name="id_user",
* referencedColumnName="id_user",
* nullable=false,
* onDelete="CASCADE"
* )
*
*/
private $user;
когда я пытаюсь сделать doctrine:schema:update --force
Я получил это в AbstractMySQLDriver.php строка 121:
An exception occurred while executing 'ALTER TABLE site_user ADD CONSTRAINT FK_B6096BB0F6BD1646 FOREIGN KEY (site_id) REFERENCES sp_site (id) ON DELETE CASCADE':
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
Ваша проблема в том, что есть таблица с существующим ограничением. Я думаю, что есть два решения
Если вы находитесь в dev, вы можете восстановить свою базу данных
doctrine:database:drop --force
doctrine:database:create
doctrine:schema:update --force
Если вы работаете на производстве, я считаю, что вам нужно сделать сценарий для получения ваших данных, сохранить где-нибудь, удалить таблицу и переделать ее или создать скрипт в sql, чтобы пропустить эту проблему