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 に答える