С дури завел этот блог, сюда буду писать что-нить чем захочу поделиться с другими, по тому как я мучаю никсы, программирую на пхп, просто страдаю фигней и все в таком духе, вобщем создали, а дальше разберемся

пятница, 26 октября 2012 г.

Symfony2 Form и ManyToMany

Заметка чтобы самому не забыть и другим может быть полезна.

Проблема как ни странно в том что форма не сохраняется.


Есть двунаправленная связь ManyToMany

User
    /**
     * @ORM\ManyToMany(targetEntity="Domain", mappedBy="users")
     */
    protected $domains;

Domain
    /**
     * @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

Комментариев нет: