2017-02-21 19 views
0

сначала извините за мой английский, это не мой родной язык.Удалить строку с joinTable 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". 

Что я делаю не так?

Edit: После выполнения 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 и думал, что это было сделано правильно

Спасибо всем, кто помог мне

+0

Попробуйте удалить кэш и схему обновления .. –

+0

Вам нужно удалить записи из таблицы «demandes_sites», связанные с записью, которую вы пытаетесь удалить из таблицы «demandes» –

+0

Удалить кеш не работал / Атрибут onDelete = "CASCADE" не предназначен для удаления связанных записей "demandes_sites" для меня? –

ответ

0

Может быть, вы добавили onDelete="CASCADE" вариант, когда вы уже сформировали модель на БД и вы не обновлялись.

Убедитесь, что происходит с командой

php app/console doctrine:schema:update --dump-sql 
+0

У меня: [InvalidArgumentException] Каталог «XXX» недоступен для записи. Я также делаю это с параметром --force, тем же результатом. Я думаю, что это говорит о том, что я не написал правильно –

+0

Попробуйте удалить все файлы в 'app/cache' и' app/logs', а затем установить правильные разрешения 'chmod 777 app/cache app/logs' и повторить предыдущие команды – ste

+0

Как я думал это было написано с учетом вопроса. Я подчинил команду, и она прошла. Я редактирую вопрос, чтобы поставить вывод. –