Как сделать взаимное удаление один-к-одному в Symfony? - PullRequest
2 голосов
/ 23 февраля 2011

У меня есть таблицы с один-к-одному.В моем config / doctrine / schema.yml обе мои таблицы соответственно имеют:

TableA:
  #...
  relations:
    TableB: { onDelete: CASCADE, local: id, foreign: table_a_id }

et

TableB:
  #...
  relations:
    TableA: { onDelete: CASCADE, local: table_a_id, foreign: id }

Когда я удаляю элемент TableA, соответствующий элемент в TableB также удаляет сам себя,Но это не работает по-другому.

Как сделать взаимное удаление один-к-одному в Symfony?


@ Pabloks : Iпонять, и это пойдет в упрощенном случае, который я представил.Но на самом деле существует как минимум третья таблица.Фактически, существует понятие наследования между первой таблицей и двумя другими.

TableA:
  #...
  relations:
    TableB: { onDelete: CASCADE, local: id, foreign: table_a_id }
    TableC: { onDelete: CASCADE, local: id, foreign: table_a_id }

TableB:
  #...
  relations:
    TableA: { onDelete: CASCADE, local: table_a_id, foreign: id }

TableC:
  #...
  relations:
    TableA: { onDelete: CASCADE, local: table_a_id, foreign: id }

1 Ответ

0 голосов
/ 23 февраля 2011

В Таблице A у вас все хорошо, но в Таблице B вы неправильно определяете отношение.

Код должен быть таким:

TableA:
  #...
  relations:
    TableB: { onDelete CASCADE, local: id, foreign: table_a_id }

et

TableB:
  #...
  relations:
    TableA: { onDelete CASCADE, local: id, foreign: table_b_id }

Параметр 'local' описывает, какойПоле модели current связано с другой моделью, поле Foreign указывает, какое поле модели other связано с полем local.

Надеюсь, что все ясно.

Редактировать: думал, что вы редактируете, было неправильно, но проверьте позже, что было правильно.Моя ошибка.

...