0

ManyToManyリレーションとそのリンクテーブルを持つ2つのエンティティE1とE2があります。存在しないE2のE1要素に追加しようとするまではすべて問題ありません。たとえば、E2はタグエンティティです。そして、ユーザーはフォームを介していくつかのタグを配置します。存在しないタグをE1に永続化する前に、E2に追加するにはどうすればよいですか?

アップデート:

さて、@Axxissの回答に従ってエンティティを更新しました。新しいタグは自動的に保持されますが、古いタグも再度保持されます。「tag1」という名前のタグがある場合は、タグテーブルに再度追加しないでください。

4

2 に答える 2

1

cascadeE1内のタグフィールドに注釈を追加する必要があります。

E1の中には、次のようなものがあります。

/**
 * @ORM\ManyToMany(targetEntity="Tag", cascade={"persist"})
 * @ORM\JoinTable(name="e1_has_tags",
 *      joinColumns={@ORM\JoinColumn(name="e1_id", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id")}
 *      )
 **/
private $tags;

推移的な永続性/カスケード操作を確認する

タグを1回だけ追加する場合は、次の2つのオプションがあります。

  1. エンティティを永続化する前に、コントローラーで実行してください
  2. エンティティで直接実行します

どちらの場合も、タグ名でクエリを実行する必要があります。タグがすでに存在する場合は、見つかったタグに置き換えてください。

于 2013-02-17T09:51:40.993 に答える
1

一意のタグが必要な場合は、永続化する前にそれらが存在するかどうかを確認する必要があります。

于 2013-02-18T05:00:18.133 に答える