教义等于,不会返回预期的结果,

时间:2013-03-03 08:35:47

标签: php mongodb doctrine

这是我的结构。

{
  "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。

这是怎么做到的? Docs似乎没有足够清楚地解释。

谢谢。

1 个答案:

答案 0 :(得分:1)

事实证明,

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

infact确实像预期的那样工作,但Symfony中的paramFetcher将整数作为String获取。

因此解决方案是

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