Doctrine / Symfony2 OneToMany将foreign_id保存为NULL

时间:2012-02-07 20:24:25

标签: symfony doctrine-orm

我有从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的经验是我不需要在这里做任何特殊的事情,应该注意它。

任何指针都会受到赞赏:)

1 个答案:

答案 0 :(得分:4)

检查您之前的设置。我怀疑你有类似的东西:

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

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