0

manyToMany 関係を持つ同じオブジェクトの 2 つのインスタンスを追加したい。

class A {

     /**

 * @ORM\ManyToMany(targetEntity="RelatedEntity", inversedBy="teachers", cascade={"persist", "remove"})
 * @ORM\JoinTable(name="table1",
 *      joinColumns={@ORM\JoinColumn(name="class_id", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="related_id", referencedColumnName="id")}
 *      )
 */
protected $myFirstEntities;


     /**

 * @ORM\ManyToMany(targetEntity="RelatedEntity", inversedBy="students", cascade={"persist", "remove"})
 * @ORM\JoinTable(name="table2",
 *      joinColumns={@ORM\JoinColumn(name="class_id", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="related_id", referencedColumnName="id")}
 *      )
 */
protected $mySecondEntities;
}



class RelatedEntity
{
  /**
 *
 * @ORM\ManyToMany(targetEntity="A", mappedBy="myFirstEntities", cascade={"persist"})
 */
protected $teachers;

  /**
 *
 * @ORM\ManyToMany(targetEntity="A", mappedBy="mySecondEntities", cascade={"persist"})
 */
protected $students;

}

私が使用するとき

        php app/console doctrine:generate:entities MyApp

プログラムは、次の名前のエンティティを追加するための一意のメソッドを生成します。

public function addRelatedEntity(\MyApp\MyBundle\Entity\RelatedEntity $myFirstEntities)
{
    $this->myFirstEntities[] = $myFirstEntities;
}

そのため、mySecondEntities を追加できません。どうすればよいですか。手動の方法では追加できますが、自動の方法では追加できません。

私の質問は、特定のクラスの 2 つの多対多関係を同じクラスに使用できますか? どうすればいいですか?

4

1 に答える 1

0

doctrine:generate:entities は、エンティティを生成する必要があるときに 1 回使用することになっていますが、生成されたマッピングが 100% 正しいことを保証するものではありません。http://docs.doctrine-project.org/projects/doctrine-orm/en/ 2.0.x/reference/tools.html#entity-generation :

このコマンドは、常時使用するのには適していません。これは小さなヘルパーであり、すべてのマッピング エッジ ケースを十分にサポートしているわけではありません。このコマンドを使用した後も、エンティティに作業を加える必要があります。

同じクラスに対して多対多のマッピングを行うことができます。手動で行うだけです

public function addFirstEntity(\MyApp\MyBundle\Entity\RelatedEntity $myFirstEntities)
{
    $this->myFirstEntities[] = $myFirstEntities;
} 

public function addSecondEntity(\MyApp\MyBundle\Entity\RelatedEntity $mySecondEntities)
{
    $this->mySecondEntities[] = $mySecondEntities;
} 
于 2012-08-01T07:00:28.957 に答える