我已经看到了很多关于将理论级联的示例(包括文档),但是每个示例都是关于创建例如新用户,新注释并保存两者的示例。
在我的情况下,帖子和用户已经存在,而不是评论。
我的问题如下:使用这种复杂方案,当现有用户保存对现有帖子的评论时,应保留/合并哪个实体,并按哪个顺序?
我不想要代码,只是解释它如何工作,这就是为什么我不包含代码的原因。谢谢。
答案 0 :(得分:1)
在这种情况下,级联并没有真正帮助您,因为我想象您有一个独立的(非嵌入式)CommentType
表单。因此,您需要在控制器中保留一个Comment
对象,该对象必须与现有的User
和Post
实体相关联。
如果您有一个PostType
表单(例如带有一个嵌入式CommentType
表单(通过comment
字段)并且您想同时保存(或更新)两个{ {1}}和一个Post
实体。
我建议您在Comment
表单中添加一个post_id
字段,并像Symfony文档建议的那样使用DataTransformer,建议here将CommentType
转换为{{1} } 实体。最后,您要做的就是在您的控制器中明确设置您的用户:
post_id
答案 1 :(得分:0)
您只需要设置Author
和Post
,然后persist
新注释:
$comment->setAuthor($yourAuthor)
->setPost($yourPost);
$em->persist($comment);
$em->flush();
在这里,我没有过多注意Answers [],因为您没有解释这种关系。但是,如果Answer
是另一个Comment
,并且如果Comment
只能是另一个Answer
的{{1}},那么您可能需要添加一个{{1} }字段,它将是一个Comment
,本质上是一个外键,因此Answers []中的所有注释都将具有Replied字段,即Replied
,其Answered []包含另一个{{1 }}。