2012-05-02 6 views
2

私はこれらの機能(attach/merge feature)で驚いています。Doctrine2:ManyToManyアソシエーションのデタッチ/マージ

私の必要性は簡単です、私はBookのコレクションをフィルタリングするBookFilterTypeを持っています。

今まで

public function indexAction() 
{ 
    $book = new Book($this->getUser()); 
    $filters = $this->getFilters(); 
    $form = $this->createForm(new BookFilterType(), $filters); 

    ... 
    return array(...); 
} 

を行うとき、私はエラーました:フィルターに彼らは他のエンティティであったためEntities passed to the choice field must be managedを。

基本的に、私はセッションでフィルタの基準を保存するときにIDだけを保存し、find($id)を使用して再水和する必要がありました。

これは醜いですし、私のコードは読めなくなります!

私はdetach/merge機能を使用することに決めました。

Class Doctrine\Common\Collections\ArrayCollection is not a valid entity or mapped super class.

QUESTION:

iの形で値を再注入するために、再度、それらをマージしたい切り離さエンティティを格納した後、私が得るので、私は私のオブジェクトにcascade={"merge"}を使用する必要があると思われます(最終的に)

はどこcascade={"merge"}を入れてください:joinColumns OR inverseJoinColumnsでは?または両方 ? ?私はこれらのフィルタ

/** 
* @ORM\ManyToMany(targetEntity="MyTargetedEntity") 
* @ORM\JoinTable(name="target_entity_nn", 
*  joinColumns={@ORM\JoinColumn(name="some_id", referencedColumnName="id")}, 
*  inverseJoinColumns={@ORM\JoinColumn(name="other_id", referencedColumnName="id")} 
*  ) 
* 
**/ 
private $contributors; 

PSでのみManyToMany関連を持っている原因:私はSymfony2.1/Doctrine masterを使用しています。

おかげ

答えて

関連する問題