Customer
Keyword
と「キーワード/顧客」関係の逆側である:Doctrine 2の双方向の多対多の関係を(逆の側から)更新していますか?
/**
* @ORM\ManyToMany(targetEntity="Keyword", mappedBy="customers",
* cascade={"persist", "remove"}
*)
*/
protected $keywords;
新しい顧客を作成する場合は、1が1つ以上のキーワードを選択する必要があります。エンティティフォームフィールドは次のとおりです。要求を結合した後、私のコントローラのコードで
$form->add($this->factory->createNamed('entity', 'keywords', null, array(
'class' => 'Acme\HelloBundle\Entity\Keyword',
'property' => 'select_label',
'multiple' => true,
'expanded' => true,
)));
とフォームが有効であるかどうかを確認、私は顧客とのすべての顧客/キーワード(複数可)の両方を永続化する必要がある団体、それが参加しています表。
しかし、顧客は逆側であるので、これが動作しない:「カスケード」オプションを使用して
if($request->isPost()) {
$form->bindRequest($request);
if(!$form->isValid()) {
return array('form' => $form->createView());
}
// Valid form here
$em = $this->getEntityManager();
$em->persist($customer);
$em->flush();
}
イベントを、このコードは失敗します。 $customer->getKeywords()
はDoctrine\ORM\PersistentCollection
を返します。これには選択したキーワードのみが含まれます。
手動で削除/追加されたキーワードを確認し、所有側から更新する必要がありますか?
私の解決策[ここ] [1]を掲載しました。それが助けてくれることを願って。 [1]:http://stackoverflow.com/a/27113108/3133441 – ajtamwojtek