我有从Assembly到ComponentSlot的关系。这是OneToMany的关系。
// 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的集合。我可以添加多个ComponentSlot子项。在持久化时,Assembly和ComponentSlot子节点都保存得非常好,除了组件槽表中的assembly_id为NULL。
我已经复制了我之前项目中的设置,保存了很好的关系,我完全被难倒了。级联持久化是在Assembly的componentSlots字段中设置的,我之前使用OneToMany的经验是我不需要在这里做任何特殊的事情,应该注意它。
任何指针都会受到赞赏:)
答案 0 :(得分:4)
检查您之前的设置。我怀疑你有类似的东西:
// Assembly
public function addComponentSlot($componentSlot)
{
$this->componentSlots[] = $componentSlot;
$componentSlot->setAssembly($this); // Probably left this out when you copied?
}