2

我有一个文档,其中包含一个标记为持久性的字段作为集合

 use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;  

/** @ODM\Document */
class Item
{
    /**
    * @ODM\Collection
    */
    protected $things;

}

默认情况下,当 Doctrine 从 Mongo 映射值时,它会将 $things 设置为 Doctrine\Common\Collections\ArrayCollection 的一个实例。

然而,这违反了我的域模型,因为我的域对象期望 $things 属性是我自己的集合类 ThingsCollection 的一个实例。此类对事物列表进行各种验证。

我怎样才能告诉 Doctrine 使用我的 ThingsCollection 类呢?我想我将不得不让 ThingsCollection 类实现 Doctrine\Common\Collections\Collection 接口,但如果我能首先弄清楚如何告诉 Doctrine 映射,这不是问题。

4

1 回答 1

0

答案是不可能的。

此外,尽管文档令人困惑并且另有说明,但对于如上所述的一般 Collection 属性映射(不是参考),不会返回 ArrayCollection。给出了一个基本的 php 数组。

因此,在这种情况下,您似乎被迫使用数组,至少目前是这样。

于 2012-08-29T12:10:28.617 回答