2011-12-23 22 views
0

私はDoctrineでSymfony2を使用しており、中間テーブルで表された2つのテーブル間の関係を編集したいと考えています。構造はこのようなものです:tour_id、TAG_ID:テーブルツアーSymfony2の多対多リレーションを編集する

エンティティタグに格納

エンティティツアー私は、行ごとに2つのインデックスを格納するために中央のテーブルtour_tagsを持つテーブルタグで

を保存。次のように

とエンティティ定義は次のとおりです。

/** 
* @ORM\Table(name="tour") 
* @ORM\Entity 
*/ 
Tour { 
    /** 
    * @ORM\ManyToMany(targetEntity="Tag") 
    * @ORM\JoinTable(name="tour_tags", 
    *  joinColumns={@ORM\JoinColumn(name="tour_id", referencedColumnName="id")}, 
    *  inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id")} 
    * ) 
    */ 
    private $tags; 

    ... 
} 

/** 
* @ORM\Table(name="tags") 
* @ORM\Entity 
*/ 
class Tag { 
    ... 
} 

あなたは私がタグのエンティティのいずれかの関係情報を入れていない見ることができるように。 このスキーマは関連するデータ、各ツアーのタグなどを取得するのに問題ありません。

しかし、ツアーフォームのチェックボックスを使用して関連情報を編集できるようにする必要があります。私はテーブルに既存のタグ用のチェックボックスのセットを入れたいと思っています。

/* The tour form */ 
Class TourType { 
    public function buildForm(FormBuilder $builder, array $options) { 
    ... 
    $builder->add('tags', 'collection', array('type' => new TourTagsType())); 
    } 
} 

が、作成または削除しない関係(テーブルtour_tags):このdoc http://symfony.com/doc/current/cookbook/form/form_collections.htmlそれはツアーのフォームからタグ名を編集することができますして 。

フォームにrelation(tour_tag)を挿入する方法を探しています。そのため、表にtour_id、tag_id行がある場合はチェックボックスがオンになっています。あなたのツアークラスで

+0

あなたは今まで、これは考え出しましたか –

答えて

0

、このコンストラクタを追加:

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

そして、あなたのTourType内を:

$builder->add('tags', 'entity', array(
       'class' => 'YourBundle:Tag', 
       'expanded' => true, 
       'multiple' => true 
      )) 
+0

この回答が問題を解決しましたか? –

+0

まだ試してみませんでしたが、私が作ったのは関係を編集するための独立した書式でした。 – Sergi

関連する問題