我有一个评论表,用于将对象的评论存储在 3 个不同的表中。当我对删除其中一个对象的注释运行功能测试时,它工作正常。但是,如果我运行功能测试以从其他对象中删除注释,我会收到完整性约束 MySQL 错误,因为教义试图“更新”第一个对象表,作为删除与表中对象关联的注释的一部分b 或 c。我无法弄清楚为什么删除评论是试图更新父表。
从 3 个对象表到注释表都有一个删除级联。这些表在 Symfony 1.4 的 YML 中定义
object_a:
columns:
some stuff
relations:
Comments:
class: Comments
local: id
foreign: object_a_id
type: many
foreignType: one
cascade: [delete]
object_b:
columns:
some stuff
relations:
Comments:
class: Comments
local: id
foreign: object_b_id
type: many
foreignType: one
cascade: [delete]
object_c:
columns:
some stuff
relations:
Comments:
class: Comments
local: id
foreign: object_c_id
type: many
foreignType: one
cascade: [delete]
comments:
columns:
object_a_id:
type: integer(4)
object_b_id
type: integer(4)
object_c_id
type: integer(4)
relations:
Object_a:
local: object_a_id
foreign: id
type: one
Object_b:
local: object_b_id
foreign: id
type: one
Object_c:
local: object_c_id
foreign: id
type: one
此故障仅在通过 Symfony 1.4 测试工具运行测试时发生。它在开发环境中运行良好。在添加对象 b 和 c 之前,对象 a 是必填字段,但已被删除。我已经运行了 symfony cache:clear --env=test 来查看是否删除了任何可能干扰的缓存学说对象。
编辑: 现在在生产和开发中遇到问题。据我从数据模块和 BaseModel 文件中可以看出,没有理由更新父表。