8

Doctrine ORM (2.3、PHP > 5.4) で ArrayCollection を使用し、オブジェクト値をコレクション内のキーに関連付けるたびに (setメソッドを使用する場合など)、値はデータベースに正しく格納されます。しかし、エンティティからコレクションを取得したい場合、キーは取得されず、代わりに数値インデックスが使用されます。

たとえば、次のクラスがあるとします。

/** @Entity */
class MyEntity
{
    /** @OneToMany(targetEntity="MyOtherEntity", mappedBy="mainEntity") */
    private $myArray;

    public function __construct()
    {
        $this->myArray = new ArrayCollection();
    }

    public function addOtherEntity($key, $value)
    {
        $this->myArray->set($key, $value);
    }

    ...
}

/** @Entity */
class MyOtherEntity
{
    /** @ManyToOne(targetEntity="MyEntity", inversedBy="myArray") */
    private $mainEntity;
    ...
}

メソッドはset正常に機能しますが、情報を取得するとキー$myArrayが失われます。

ORM にキーを適切に記憶させるにはどうすればよいですか? よろしくお願いします。

4

1 に答える 1