0

Upload多くのタグを持つことができる Entity があります。

/**
 * @ORM\ManyToMany(targetEntity="Tag", mappedBy="uploads")
 */
protected $tags;

多数のTagアップロードに含めることができます

/**
 * @ORM\ManyToMany(targetEntity="Upload", inversedBy="tags")
 * @ORM\JoinTable(name="upload_tag")
 */
protected $uploads;

ファイルをアップロードし、複数選択でタグを選択できるフォームがあります....ここにUploadTypeファイルのスニペットがあります

......other form elements.....
$builder->add('tags', 'entity', array(
    'multiple' => true,
    'property' => 'name',
    'class' => 'BoiMembersBundle:Tag',
));

フォーラムはエラーなしで正常に送信されます...しかし、私のmysql DBのManyToMany関係を表すupload_tagを調べると、新しい行がありません!!!

そのため、アプリケーションはこれまでにエラーを報告しません..アップロードの他のフォーム要素は正常に挿入され、「成功」ルートに転送されますが、タグの永続化は表示されません。

4

1 に答える 1

1

これUploadは、との関係の所有者ではなく、関係自体の中に新しいエンティティ (タイプ) を保持してTagいるためです。実は属性があります。UploadTagmappedBy

カスケードを構成できますoption

/**
 * @ORM\ManyToMany(targetEntity="Tag", mappedBy="uploads", cascade={"persist"})
 */
protected $tags;

またはUpload、リレーションの所有者を作成します (TagエンティティUpload内に new を保持することはないと思われる場合):

class Upload
{
    /**
     * BIDIRECTIONAL - OWNING SIDE
     * @ORM\ManyToMany(targetEntity="Tag", inversedBy="uploads")
     * @ORM\JoinTable(name="upload_tag")
     */
     protected $tags;
}    

class Tag
{

    /**
     * BIDIRECTIONAL - INVERSE SIDE
     * @ORM\ManyToMany(targetEntity="Upload", mappedBy="uploads")
     */
     protected $uploads;
}

Doctrine 2.x ドキュメントのWorking with Associationsを参照してください。

于 2012-07-10T09:28:22.910 に答える