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 にキーを適切に記憶させるにはどうすればよいですか? よろしくお願いします。