Doctrine/Symfony2 OneToMany将foreign_id保存为NULL

Por*_*ear 6 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;
Run Code Online (Sandbox Code Playgroud)

这在数据库中生成的模式绝对没问题.纠正列,正确的索引和关系.

Symfony2表单AssemblyType具有ComponentSlotType的集合.我可以添加多个ComponentSlot子项.在持久化时,除了组件槽表中的assembly_id为NULL之外,Assembly和ComponentSlot子项都保存得非常好.

我已经复制了我之前在保存关系的项目上的设置,我完全被难倒了.级联持久化是在Assembly的componentSlots字段中设置的,我之前使用OneToMany的经验是我不需要在这里做任何特殊的事情,应该注意它.

任何指针将不胜感激:)

Cer*_*rad 4

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

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

    $componentSlot->setAssembly($this);  // Probably left this out when you copied?
}
Run Code Online (Sandbox Code Playgroud)