1

我正在使用 Symfony2 表单,但无法找到如何嵌入允许创建“父/子”类型的多对多“自引用”关系的中间类表单。例如:通过“PersonParent”类与自身相关的“Person”类。xml 架构如下所示:

<table name="person">
  <column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
  <column name="name" type="VARCHAR" size="100" required="true"/>
</table>
<table name="person_parent">
  <column name="person_id" type="INTEGER" primaryKey="true" required="true"/>
  <column name="parent_id" type="INTEGER" primaryKey="true" required="true"/>
  <foreign-key foreignTable="person" onDelete="CASCADE">
      <reference local="person_id" foreign="id"/>
  </foreign-key>
  <foreign-key foreignTable="person" onDelete="CASCADE">
      <reference local="parent_id" foreign="id"/>
  </foreign-key>
</table>

我正在使用 PropelBundle 而不是学说,但即使您使用的是学说,您也可以在这个问题上给我一个领导。请注意,当前的关系与“Friend like”关系不同,后者存在 EqualNest 行为,该行为创建方法以直接从“Person”对象形式获取/设置“Friend”对象,而无需嵌入中间“PersonParentType”类形式。

我尝试使用 Propel 生成的方法,如 setPersonParentsRelatedByPersonId,同时在 PersonType 表单中嵌入 PersonParentType 表单以便能够添加“PersonParentsRelatedByPersonId”对象,但问题是我不知道如何在 PersonParentType 表单中定义“person_id”因为“person_id”还不能用于新的人。仅在 PersonParentType 中为“parent_id”添加一个字段会导致“非空违规”,因为缺少“person_id”。

有任何想法吗?这个问题与我之前询问是否存在处理此问题的 Propel 行为的问题相关但范围不同。

4

1 回答 1

0

您可以在此处找到一些关于使用学说自引用 manytomany 的文档 http://doctrine-orm.readthedocs.org/en/2.0.x/reference/association-mapping.html#many-to-many-self-referencing

于 2012-08-25T21:40:41.820 回答