DoctrineModule DoctrineObject ハイドレーターを使用して 3 つのエンティティをハイドレートしようとしています。Stdlib\ObjectProperty ハイドレーターで同じことを試みたところ、期待どおりの正しい結果が得られました。
最初のエンティティ:
Class Stable
{
/**
* @ORM\OneToMany(targetEntity="Rider", mappedBy="stable", cascade={"persist"})
*/
protected $riders;
}
2番:
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 プロパティ、ゲッター、セッターは省略しました。
次のデータでStableを水和すると:
Stable
Rider1
Horse1
Horse2
Rider2
Horse3
Rider3
Horse1
Horse4
代わりにこれを取得します:
Stable
Rider1
Horse1
Horse4
Rider2
Horse1
Horse4
Rider3
Horse1
Horse4
何が完全に間違っています。Stdlib\ObjectProperty ハイドレーターを使用するときに前に述べたように、指定されたデータと同じオブジェクト関係が得られます。誰でもこの問題を解決する方法を知っていますか?