私のアプリケーションにはPostとTagのエンティティがあり、それらの間には多くの関連が必要です。私はそれを正しく管理したとは思うが、確かにそうは思わない。ここに私のエンティティは以下のとおりです。Symfony2 ManyToMany埋め込みフォーム
ポスト:
/**
* @ORM\Table(name="posts")
*/
class Post
{
(...)
/**
* @ORM\OneToMany(targetEntity="PostTag", mappedBy="post_id")
*/
private $tags;
public function __construct()
{
$this->tags = new ArrayCollection();
}
(...)
}
タグ:もちろん、すべての3の
/**
* @ORM\Table(name="post_tags")
* @ORM\Entity
*/
class PostTag
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="Post", inversedBy="tags")
* @ORM\JoinColumn(name="post_id", referencedColumnName="id")
*/
private $post_id;
/**
* @ORM\ManyToOne(targetEntity="Tag", inversedBy="posts")
* @ORM\JoinColumn(name="tag_id", referencedColumnName="id")
*/
private $tag_id;
(...)
}
と:私はまた、これらの関係を格納するためのPostTagエンティティを作成し
class Tag
{
/**
* @ORM\Column(name="tagname", unique=true, type="string", length=255)
*/
private $tagname;
/**
* @ORM\OneToMany(targetEntity="PostTag", mappedBy="tag_id")
*/
private $posts;
public function __construct()
{
$this->posts = new ArrayCollection();
}
(...)
}
適切なゲッター/セッター。関係はこのように大丈夫ですか?
私はそれが正しいと信じていますが、今私はPostエンティティに埋め込みフォームを作るのに苦労しています。私が必要とするのは、PostTypeのタグフィールドを作成することです。そこでは、タグテーブルに保存されたタグと、新しく作成されたタグとpost_tagsテーブルの投稿のIDの両方を入力できます。既に保存されているタグを別のフィールドで選択できるようにしたいので、エンティティをこのように構築する必要があります。
私はこれを書こうとしましたが、実際には悪いコードと混同してしまったので、私が持っていたものをコピーしようとしません。誰かが簡単に私に啓発することができますこれを達成する必要がありますか?
おかげ
私はありがとうございますnput。私の問題は、本当に多対多の関係を作りたくないということです。私はそれを行う場合、私はそのテーブルにフィールドや書式を追加することはできません、そして、私は本当にそれが好きではありません。リンクしているDoctrineドキュメントでさえ、3つのエンティティ間に1対多、多対1の関係を持つ中間エンティティを作成する方が良い方法だと言います。フォームコレクションのヒントありがとう! – stamas
私はこの解決策を最後に行った。 – stamas