Заметка чтобы самому не забыть и другим может быть полезна.
Проблема как ни странно в том что форма не сохраняется.
Есть двунаправленная связь ManyToMany
User
/**
* @ORM\ManyToMany(targetEntity="Domain", mappedBy="users")
*/
protected $domains;
В конструкторах каждый объявлен как ArrayCollection, стандартно генериться такой код
public function addDomain(\Stat\InterfaceBundle\Entity\Domain $domain)
{
$this->domains[] = $domain;
return $this;
}
public function removeDomain(\Stat\InterfaceBundle\Entity\Domain $domain)
{
$this->domains->removeElement($domain);
}
Проблема как ни странно в том что форма не сохраняется.
Есть двунаправленная связь ManyToMany
User
/**
* @ORM\ManyToMany(targetEntity="Domain", mappedBy="users")
*/
protected $domains;
Domain
/**
* @ORM\ManyToMany(targetEntity="User", inversedBy="domains")
*/
protected $users;
/**
* @ORM\ManyToMany(targetEntity="User", inversedBy="domains")
*/
protected $users;
В конструкторах каждый объявлен как ArrayCollection, стандартно генериться такой код
public function addDomain(\Stat\InterfaceBundle\Entity\Domain $domain)
{
$this->domains[] = $domain;
return $this;
}
public function removeDomain(\Stat\InterfaceBundle\Entity\Domain $domain)
{
$this->domains->removeElement($domain);
}
Чтобы все работало нужно
1) добавить
'by_reference' => false,
2) заменить функции на
public function addDomain(Domain $domain)
{
if (!$this->domains->contains($domain))
{
$this->domains->add($domain);
$d->addDomain($this);
}
}
public function removeDomain(Domain $domain)
{
if ($this->domains->removeElement($domain))
$domain->removeDomain($this);
}
И аналогично для User
Комментариев нет:
Отправить комментарий