2011-10-19 12 views
1

以下の関係で3つのエンティティ(Item、Agree、Disagree)を作成しようとしています。Doctrine2は「2」の1対多の関係を作成できません

  • 項目1対多の
  • 項目1対多は

を同意しない同意するが、2つのうち一つだけ関係(後に宣言された)が行われました。

ここは私の.ymlファイルです。


Entities\Item: 
    type: entity 
    fields: 
    id: 
     type: integer 
     id: true 
     generator: 
     strategy: AUTO 
    oneToMany: 
    agrees: 
     targetEntity: Agree 
     mappedBy: items 
    oneToMany: 
    disagrees: 
     targetEntity: Disagree 
     mappedBy: items 

Entities\Agree: 
    type: entity 
    fields: 
    id: 
     type: integer 
     id: true 
     generator: 
     strategy: AUTO 
    manyToOne: 
    items: 
     targetEntity: Item 
     inversedBy: agrees 

Entities\Disagree: 
    type: entity 
    fields: 
    id: 
     type: integer 
     id: true 
     generator: 
     strategy: AUTO 
    manyToOne: 
    items: 
     targetEntity: Item 
     inversedBy: disagrees 

以下のコードItem.phpのDoctrine2により自動生成されます。ご覧のとおり、「同意」は一切含まれていません。


namespace Entities; 

class Item { 
    private $id; 
    private $disagrees; 

    public function __construct() { 
     $this->disagrees = new \Doctrine\Common\Collections\ArrayCollection(); 
    } 

    public function getId() { 
     return $this->id; 
    } 

    public function addDisagrees(\Entities\Disagree $disagrees) { 
     $this->disagrees[] = $disagrees; 
    } 

    public function getDisagrees() { 
     return $this->disagrees; 
    } 
} 

Iの宣言順序を切り替える場合は、この時点でAgree'関連コード 'Item.phpのみを有している(以下のように、最初、by'Agreeに従っ '反対します'') 。私のコードで間違って何


Entities\Item: 
    type: entity 
    fields: 
    id: 
     type: integer 
     id: true 
     generator: 
     strategy: AUTO 
    oneToMany: 
    disagrees: 
     targetEntity: Disagree 
     mappedBy: items 
    oneToMany: 
    agrees: 
     targetEntity: Agree 
     mappedBy: items 

?コメントは参考になります。

商品とは、この商品につけられてのみ表示されます。実際のプロジェクトでは、AgreeとDisagreesはまったく異なる存在です。ですから、それらを統一されたエンティティにマージするように提案しないでください。 :)あなたが接近していた

答えて

8

、あなただけの同じ型宣言の下、すべて同じ関連マッピングの種類を配置する必要があります:)

oneToMany: 
    agrees: 
     targetEntity: Agree 
     mappedBy: items 
    disagrees: 
     targetEntity: Disagree 
     mappedBy: items 
関連する問題