0

これが私の構造です。

{
  "title" : "wastelands",
  "playerLimit" : [ 
    1, 
    2, 
    4 ],
  "mode" : "coop" 
}

ここで、playerLimit に任意の値が含まれている場所を選択したいと思います。mongodb を使用すると、このように実行できます。

> db.Map.find({playerLimit : 4})
{ "title" : "wastelands", "playerLimit" : [ 1, 2, 4 ], "mode" : "coop" }

これはドクトリンでこれに対応すると思います

$q = $this->get('doctrine_mongodb')
->getRepository('AcmeGameBundle:Map')
>createQueryBuilder();
$q->field('playerLimit')->equals($playerLimit);

$playerLimit は 4 で、実行時に得られるのは null だけです。

これはどのように行われますか?ドキュメントは十分に明確に説明していないようです。

ありがとうございました。

4

1 に答える 1

1

結局のところ、

$q->field('playerLimit')->equals($playerLimit);

実際には期待どおりに動作しますが、Symfony の paramFetcher は整数を文字列としてフェッチしていました。

したがって、解決策は

$q->field('playerLimit')->equals( (int) $playerLimit);
于 2013-03-03T14:49:48.303 に答える