Я боролся с определением каскадного поведения в Doctrine ORM.
Согласно документации , предполагается использовать onDelete: CASCADE
для каскада на уровне базы данных (чего я и пытаюсь достичь здесь).
Полный пример можно увидеть в учебнике Symfony .
Однако все такие каскадные характеристики в моей схеме игнорируются.
Вот соответствующая выдержка:
Advancement:
columns:
association_id:
type: integer(4)
notnull: true
task_id:
type: integer(4)
notnull: true
state:
type: enum
values: ['todo', 'current', 'done', 'cancelled']
notnull: true
relations:
Association:
class: Association
local: association_id
foreignType: one
onDelete: CASCADE
Task:
class: Task
local: task_id
foreignType: one
onDelete: CASCADE
Конечно, таблицы задач и ассоциаций определены правильно. Я не буду публиковать их здесь, во-первых, чтобы избежать слишком длинного вопроса, но, пожалуйста, спросите, если это кажется необходимым.
Вот сгенерированный SQL (мой разрыв строки):
CREATE TABLE advancement
(id INTEGER PRIMARY KEY AUTOINCREMENT,
association_id INTEGER NOT NULL,
task_id INTEGER NOT NULL,
state VARCHAR(255) NOT NULL);
Ни следа CASCADE
(ни REFERENCES
, кстати ...). Конечно, каскадирование не работает, и мне пришлось реализовать его вручную, изменив действия по умолчанию для бэкэнда.
Кто-нибудь знает, что я здесь не так делаю?