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 を使用していますが、ドクトリンを使用している場合でも、この問題について私にリードを与えることができるかもしれません。目前の関係は、埋め込みを必要とせずに「Person」オブジェクト フォームから直接「Friend」オブジェクトを取得/設定するメソッドを作成する EqualNest 動作がある「Friend like」関係と同じではないことに注意してください。中間の「PersonParentType」クラス フォーム。

「PersonParentsRelatedByPersonId」オブジェクトを追加できるように PersonType フォームに PersonParentType フォームを埋め込みながら、setPersonParentsRelatedByPersonId のような Propel 生成メソッドを使用しようとしましたが、問題は、PersonParentType フォームで「person_id」を定義する方法がわからないことです。 "person_id" は新しい Person にはまだ利用できないためです。PersonParentType に「parent_id」のフィールドのみを追加すると、「person_id」が欠落しているため、「Not null 違反」になります。

何か案は?この質問は関連していますが、これを処理するための Propel ビヘイビアーの存在について問い合わせた以前の質問とは範囲が異なります。

4

1 に答える 1

0

http://doctrine-orm.readthedocs.org/en/2.0.x/reference/association-mapping.html#many-to-many-self-referencingで、ドクトリンを使用した多対多の自己参照に関するドキュメントを見つけることができます。

于 2012-08-25T21:40:41.820 に答える