创建与孩子有关的记录

时间:2016-07-06 09:41:21

标签: php symfony-forms symfony

我有两个实体页面(名称,描述......)和Seo(page_id,title ...)。我用SeoType作为孩子构建了表单Page。发送表单后,我收到带有填充Seo部分的Page实体,但是没有page_id(很明显)。

甚至可以存储Page,以便自动在seo部分设置page_id?

很抱歉,但我无法清楚地表达自己。

我的转储对象:

enter image description here

1 个答案:

答案 0 :(得分:1)

根据symfony文档,这里:http://symfony.com/doc/current/cookbook/form/form_collections.html(参见'Doctrine:级联关系并保存“反向”侧)

如果您的表单数据类是拥有方:

class Seo
{
    /**
     * @ORM\ManyToOne(targetEntity="AppBundle:Page", cascade={"persist"})
     */
    private $page;
}

如果您的表单处于反面,则必须添加所拥有的实体以进行交易:

class Seo
{
     /**
     * @ORM\OneToMany(targetEntity="AppBundle:Page", mappedBy="seo")
     */
    private $pages;

    public function addPage(Page $page)
    {
        $page->setSeo($this);

        $this->pages->add($page);
    }
}

class Page
{
     /**
     * @ORM\ManyToOne(targetEntity="AppBundle:Seo", inversedBy="pages")
     */
    private $seo;

    public function setSeo(Seo $seo)
    {
        $this->seo = $seo;
    }
}