Добрый вечер,Symfony2 ManyToMany отношение не связывает 2 лица - Doctrine2 пытается сохраняться обратные Entity
я разработал мое приложение таким образом, что пользователь может подписаться на несколько событий и событий может иметь несколько подписчиков типа пользователя.
Я решил создать отношения ManyToMany между сущностью Event и сущностью User для достижения этого.
Точнее, объект Event имеет отношение.
class Event implements EventInterface
{
/**
* @ORM\ManyToMany(targetEntity="FS\UserBundle\Entity\User", inversedBy="events")
*/
private $subscribers;
public function __construct()
{
$this->subscribers = new \Doctrine\Common\Collections\ArrayCollection();
}
/*
** FYI my app logic is to persist the event so i addEvent($this) to $subscriber
*/
public function addSubscriber(\FS\UserBundle\Entity\User $subscriber)
{
$this->subscribers[] = $subscriber;
$subscriber->addEvent($this);
return $this;
}
Мое лицо пользователя является обратной стороной отношения.
class User implements UserInterface
{
/**
* @ORM\ManyToMany(targetEntity="FS\EventBundle\Entity\Event", mappedBy="subscribers")
*/
private $events;
public function __construct()
{
$this->events = new \Doctrine\Common\Collections\ArrayCollection();
}
public function addEvent(\FS\EventBundle\Entity\Event $event)
{
$this->events[] = $event;
return $this;
}
...
Я добавляю подписчик ($ user) к новому событию. Затем я отправить событие с данными моего EventForm к этому контроллеру:
private function processForm(EventInterface $event, array $parameters, $method = "PUT")
{
$form = $this->formFactory->create(new EventType(), $event, array('method' => $method));
$form->submit($parameters, 'PATCH' !== $method);
$event = $form->getData();
$validator = $this->container->get('validator');
$listErrors = $validator->validate($event);
if ($form->isValid() && count($listErrors) === 0) {
$event->setAge();
$this->om->persist($event);
$this->om->flush($event);
}
Когда я упорствуем событие, пользователь не отражает каких-либо изменений, и я получаю следующее исключение: Новый объект был найден через отношения 'FS \ UserBundle \ Entity \ User # events', который не был настроен на каскадное сохранение операций для объекта [пользователя].
Почему Doctrine2 попытается повторно использовать пользователя в этом случае?
Я пытался добавить каскад = { «упорствовать»}, но ошибка такая же, у тебя есть другая идея? – Louis
http://docs.doctrine-project.org/en/latest/reference/working-with-associations.html, вам нужно будет добавить некоторые методы, я буду обновлять свой ответ как можно скорее – smarber