条令/Symfony2 OneToMany外国身份证另存为空

条令/Symfony2 OneToMany外国身份证另存为空,symfony,doctrine-orm,Symfony,Doctrine Orm,我有一个从Assembly到ComponentSlot的关系。这是一种一夫多妻的关系 // Assembly /** * @ORM\OneToMany(targetEntity="ComponentSlot", mappedBy="assembly", cascade={"persist"}) * @Assert\Valid */ protected $componentSlots; // ComponentSlot /** * @ORM\ManyToOne(targetEntit

我有一个从Assembly到ComponentSlot的关系。这是一种一夫多妻的关系

// Assembly

/**
 * @ORM\OneToMany(targetEntity="ComponentSlot", mappedBy="assembly", cascade={"persist"})
 * @Assert\Valid
 */
protected $componentSlots;

// ComponentSlot

/**
 * @ORM\ManyToOne(targetEntity="Assembly", inversedBy="componentSlots")
 */
protected $assembly;
这在数据库中生成的模式非常好。正确的列、正确的索引和关系

Symfony2表单AssemblyType具有ComponentSlotType的集合。我能够添加多个组件插槽子项。持久化时,除了组件插槽表中的Assembly_id为NULL之外,Assembly和ComponentSlot子级都保存得非常好

我复制了以前项目中的设置,很好地保存了关系,我完全被难住了。cascade persist设置在组装的componentSlots字段上,我过去在OneToMany的经验是,我不需要在这里做任何特殊的事情,应该注意它


任何提示都将不胜感激:)

检查您以前的设置。我怀疑你有过这样的经历:

// Assembly
public function addComponentSlot($componentSlot)
{
    $this->componentSlots[] = $componentSlot;

    $componentSlot->setAssembly($this);  // Probably left this out when you copied?
}

你如何建立这种关系?你称之为什么方法?正如我所说,我有一个项目,它已经以同样(显然不是;)的方式建立了一对一的关系。在该项目中,父级有
addLink(Link$Link)
,它只调用
$this->Link[]=$Link
。事实上,位于的文档确认父集合项和子集合项的链接是自动的。这应该是自动的,我以前的项目、文档以及doctrine:generate:entities没有在auto generate add方法中建立这种关系这一事实表明我的模型是正确的,还有一些我认为我几乎犯了错误的事情——在collection form字段中的by_reference被省略,而不是设置为false。但这并没有改变为孩子们存储的ID。不,添加它不会改变任何东西。我还在
setComponentSlots
上尝试了这个方法,Symfony2在请求时使用它->bindRequest来设置对象,但这也不起作用。