2012-03-13 22 views
0

Symfony2およびorm.ymlファイルを使用してエンティティをデータベースにマッピングする方法A、B、Cのエンティティ間に3-ary関係を作成して、A_PrimaryKey、B_PrimaryKey、エンティティ間の関係C_PrimaryKeyこのです:Symfony2 3-ary関係

ABの多対多 AC多対多 BCの多対多

+0

他の関係と同様に、多対1 /多対多の関係を作成してみましたか?当然のことながら、この関係はサポートされていません! – Sgoettschkes

+0

私はそれをやってみたが失敗した。どうしたらいいのか教えていただけますか?ありがとう。 – Haritz

答えて

0

だから、あなたの基本的なモデルは次のようになります。

A 1:n D 
B 1:n D 
C 1:n D 

YMLのようになりますのためにこの:

Acme\TestBundle\Entity\D: 
    type: entity 
    # ... 
    manyToOne: 
     a: 
      targetEntity: A 
      inversedBy: as 
      joinColumn: 
       name: a_id 
       referencedColumnName: id 
     b: 
      targetEntity: B 
      inversedBy: bs 
      joinColumn: 
       name: b_id 
       referencedColumnName: id 
     c: 
      targetEntity: C 
      inversedBy: cs 
      joinColumn: 
       name: c_id 
       referencedColumnName: id 

はそれを試してみる:あなたはDについてBとCでこれを繰り返すことができ

Acme\TestBundle\Entity\A: 
    type: entity 
    # ... 
    oneToMany: 
     products: 
      targetEntity: D 
      mappedBy: d 

、それは次のようになります。たぶんAとDを最初にマップしようとします。これが機能する場合は、Bを続行してください。途中でエラーが発生する可能性が高くなります。

+0

これはphp app/consoleを実行したときの結果です。doctrine:schema:update --force:[PDOException] SQLSTATE [42000]:構文エラーまたはアクセス違反:1075不正なテーブル定義。オートコラムが1つしかなく、キーとして定義されている必要があります。 – Haritz

+0

現在は正常です。ありがとう。このエラーは古いテーブルによるものです。 – Haritz

+0

エンティティA、B、C間の関係が次のような場合はどうなりますか:A-B onetone A-C onetomany B-C onetomany – Haritz

関連する問題