使用joinTable Symfony删除行

时间:2017-02-21 13:20:59

标签: php symfony

首先抱歉我的英语,它不是我的母语。

所以,我想从表中删除一行:

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

/**
 * @ORM\ManyToMany(targetEntity="Site", cascade="all", orphanRemoval=true)
 * @ORM\JoinTable(name="demandes_sites",
 *      joinColumns={@ORM\JoinColumn(name="demande_id", referencedColumnName="id", onDelete="CASCADE")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="site_id", referencedColumnName="id", onDelete="CASCADE")}
 *      )
 * @Assert\Count(min = 1)
 */
private $sites;
}

但是当我删除时,我有这个错误:

An exception occurred while executing 'DELETE FROM demandes WHERE numero_qc = ?' with params ["test delete"]:

SQLSTATE[23503]: Foreign key violation: 7 ERROR: update or delete on table "demandes" violates foreign key constraint "fk_7c6153f880e95e18" on table "demandes_sites"
DETAIL: Key (id)=(52) is still referenced from table "demandes_sites".

我做错了什么?

修改: 完成php console doctrine:schema:update --dump-sql --force

我有这个退出:

ALTER TABLE demandes_sites DROP CONSTRAINT FK_7C6153F880E95E18; ALTER TABLE demandes_sites DROP CONSTRAINT FK_7C6153F8F6BD1646; ALTER TABLE demandes_sites ADD CONSTRAINT FK_7C6153F880E95E18 FOREIGN KEY (demande_id) REFERENCES demandes (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; ALTER TABLE demandes_sites ADD CONSTRAINT FK_7C6153F8F6BD1646 FOREIGN KEY (site_id) REFERENCES sites (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE;

对我来说,正确的解决方案是更新数据库架构。我的错误是我没有看到阻止maj的错误,并认为它是正确的

感谢所有帮助过我的人

1 个答案:

答案 0 :(得分:0)

也许你添加了 onDelete="CASCADE" 您已经在数据库上生成模型并且没有更新的选项。

验证命令

会发生什么
 php app/console doctrine:schema:update --dump-sql