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 回答