我正在尝试使用DoctrineModule DoctrineObject水合物来保湿3个实体。 我尝试用Stdlib \ ObjectProperty保湿剂做同样的事情,我得到了预期,正确的结果。
第一个实体:
Class Stable
{
/**
* @ORM\OneToMany(targetEntity="Rider", mappedBy="stable", cascade={"persist"})
*/
protected $riders;
}
第二
Class Rider
{
/**
* @ORM\OneToMany(targetEntity="Horse", mappedBy="rider", cascade={"persist"})
*/
protected $horses;
}
第三
Class Horse
{
/**
* @ORM\ManyToOne(targetEntity="Rider", inversedBy="horses")
* @ORM\JoinColumn(name="horse_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected $rider;
}
我省略了id属性,getter和setter。
当我用以下数据给Stable补水时:
Stable
Rider1
Horse1
Horse2
Rider2
Horse3
Rider3
Horse1
Horse4
我得到了这个:
Stable
Rider1
Horse1
Horse4
Rider2
Horse1
Horse4
Rider3
Horse1
Horse4
什么是完全错误的。正如我之前所说的,当使用Stdlib \ ObjectProperty水化器时,我获得与给定数据中相同的对象关系。 谁知道如何解决这个问题?
答案 0 :(得分:2)
解决了它。
DoctrineModule docs说:
不应交换学说集合。
事实证明,为了让嵌套集合适当补充水分,你必须交换它们:
Class Rider
{
// model properties
public function addHorses($horses)
{
$this->horses = $horses;
}
// other getters and setters
}