Customer
jest odwrotna strona „słowa kluczowe/klientów” relacji z Keyword
:Aktualizowanie (od strony odwrotnej) dwukierunkowych relacji wiele do wielu w Doctrine 2?
/**
* @ORM\ManyToMany(targetEntity="Keyword", mappedBy="customers",
* cascade={"persist", "remove"}
*)
*/
protected $keywords;
Podczas tworzenia nowego klienta, należy wybrać jeden lub więcej słów kluczowych. Pole forma jednostka:
$form->add($this->factory->createNamed('entity', 'keywords', null, array(
'class' => 'Acme\HelloBundle\Entity\Keyword',
'property' => 'select_label',
'multiple' => true,
'expanded' => true,
)));
W moim kodu sterownika, po związaniu żądanie i sprawdzić, czy forma jest ważna, muszę utrzymywać zarówno klientowi i wszystkie Klienta/słowa kluczowego (y) stowarzyszenia, czyli przyłączenia stół.
Jednak klient jest odwrotnością boku, tak to nie działa:
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();
}
zdarzeń z opcją „kaskadowej”, ten kod nie powiedzie się. $customer->getKeywords()
zwróci Doctrine\ORM\PersistentCollection
, który zawiera tylko wybrane słowa kluczowe.
Czy należy ręcznie sprawdzić, które słowo kluczowe zostało usunięte/dodane, a następnie zaktualizować po stronie właściciela?
Napisałem o rozwiązaniu [tutaj] [1]. Mam nadzieję, że to pomoże. [1]: http://stackoverflow.com/a/27113108/3133441 – ajtamwojtek