我一直在努力與defining cascade behavior在學說ORM。如何與Doctrine 1.2級聯刪除?
根據the documentation,一個應該使用onDelete: CASCADE
數據庫級聯級聯(這是我在這裏試圖實現的)。
一個完整的例子可以在Symfony tutorial上看到。
但是,我的模式中忽略了所有這些級聯規範。
下面是相關的摘錄:
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
,順便......)。當然,級聯不起作用,我必須通過改變默認的後端操作來手動實現它。
有沒有人知道我在做什麼錯在這裏?
Doctrine在生成的sql(data/sql/schema.sql)結尾處生成外鍵關係,檢查它們是否在那裏。 – Maerlyn
不,我實際上'grep'通過所有生成的SQL,並沒有'CASCADE'的蹤跡...感謝精度! – MattiSG