我自己在Symfony上训练并且遇到双向关联问题(非常基本),因为通过转储我的实体在twig模板中我验证数据是否正确但关联是永远是空的。
我的问题与this one类似,但解决方案未共享。
我阅读了文档here,似乎我遵循了正确的步骤。
我的数据库包含父表和 children.parent_id 相关的儿童表作为外键,两个表都是popolated并且我使用DOCTRINE:GENERATE:ENTITIES AND DOCTRINE:GENERATE:CRUD。
在家长班我有:
function __construct() {
$this->lastUpd = new \DateTime();
$this->children = new ArrayCollection();
}
/*
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Children", mappedBy="parent_id", cascade={"persist"})
*/
private $children;
public function setChildren(ArrayCollection $children) {
return $this->children = $children;
}
public function getChildren() {
return $this->children;
}
在儿童班,我有:
/**
* @var \AppBundle\Entity\Parents
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Parents", inversedBy="children")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="parent_id", referencedColumnName="parent_id")
* })
*/
private $parent_id;
/**
* Set parent_id
* @param \AppBundle\Entity\Parents $parent_id
* @return Parents
*/
public function setParentID(\AppBundle\Entity\Parents $parent_id= null) {
$this->parent_id = $parent_id;
return $this;
}
/**
* Get parent_id
* @return \AppBundle\Entity\Parents
*/
public function getParentID() {
return $this->parent_id;
}
作为查看Simfony探查器(父母列表页面)的其他信息 - >学说 - >我找到的实体映射(没有错误)AppBundle \ Entity \ Parents和AppBundle \ Entity \ Type(一个工作的单向OneToMany关联)。
我很遗憾发布一个如此基本的错误,我打赌解决方案很简单,但我无法看到它。
答案 0 :(得分:0)
注意:我假设您没有创建子项的ArrayCollection并将它们添加到大众中。
你没有任何addChild
方法(你需要调用)。
ArrayCollection
可以很容易。
public function addChild(Children $child) {
$this->children->add($child);
}
您也可以使用removeChild
。
public function removeChild(Children $child) {
$this->children->removeElement($child);
}
然后进入你的控制器。
$child = new Children();
$parent->addChild($child);
然后当您持久保存父对象时,由于级联持续存在,子对象将会跟随。我也会添加cascade={"remove"}
,所以当你删除父母时,孩子们会去。{/ p>