2

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 ハイドレーターを使用するときに前に述べたように、指定されたデータと同じオブジェクト関係が得られます。誰でもこの問題を解決する方法を知っていますか?

4

1 に答える 1