我有两个使用yaml注释定义的学说实体(User和DatiFiscali),如下所示。
我想要实现的是删除用户以便在级联上删除 DatiFiscali 时
但是使用下面的配置我只能获得相反的行为:当删除 DatiFiscali 时,用户也将在级联中删除。
我可以通过手动添加以下外键轻松获得所需的结果:
CONSTRAINT `datifiscali_ibfk_1` FOREIGN KEY (`id`) REFERENCES `User` (`datifiscali_id`) ON DELETE CASCADE
但是,使用' docrine orm更新架构时:schema-tool:update'正确的学说将尝试DROP上面的外键。
在没有任何可能的情况下实现上述目标:
实体A:
Test\User:
type: entity
table: User
id:
id:
type: integer
generator:
strategy: AUTO
fields:
username:
type: text
nullable: true
email:
type: text
nullable: true
oneToOne:
datiFiscali:
targetEntity: DatiFiscali
inversedBy: user
joinColumns:
datifiscali_id:
referencedColumnName: id
onDelete: CASCADE
实体B:
Test\DatiFiscali:
type: entity
table: DatiFiscali
id:
id:
type: integer
generator:
strategy: AUTO
fields:
name:
type: text
nullable: true
surname:
type: text
nullable: true
business_name:
type: text
nullable: true
oneToOne:
user:
targetEntity: User
mappedBy: datiFiscali
感谢您的帮助!
答案 0 :(得分:0)
尝试将cascade选项放在正确的位置:
oneToOne:
datiFiscali:
targetEntity: DatiFiscali
inversedBy: user
joinColumns:
datifiscali_id:
referencedColumnName: id
cascade: ["remove"]