【问题标题】:Doctrine2 ODM Limit doesn't work / mongodbDoctrine2 ODM 限制不起作用/mongodb
【发布时间】:2014-06-17 21:11:34
【问题描述】:

我试图跳过和限制结果,但我什至没有得到它来限制结果。

这是我的代码

    $limit=5;
    $fooQueryBuilder = $this->mongo->getManager()->createQueryBuilder('CustomCoreBundle:Foo');
    $foos=$fooQueryBuilder->limit($limit)->getQuery()->execute();

    var_dump(count($foos));
    exit;

var_dump 返回

int(321235)

这等于数据库中的所有实体,我做错了什么?

$this->mongo->getManager() 

的实例
Doctrine\ODM\MongoDB\DocumentManager

构建器是

的实例
Doctrine\ODM\MongoDB\Query\Builder"

我只是不明白出了什么问题,感谢任何提示

【问题讨论】:

    标签: php mongodb symfony doctrine-orm


    【解决方案1】:

    所以,我自己找到了答案

    it is working !
    

    我学到了:

    当你 count() 一个游标时,无论查询什么,它都会返回数据库中所有实体的数量。

    所以我检查光标以查看限制是否有效是完全错误的

    【讨论】:

    • 这是一个无价的小sn-p,很高兴它在谷歌的顶端!在文档中应该更清楚
    【解决方案2】:

    使用 count($result->toArray()) 解决了我的问题

    count($result->toArray())
    

    【讨论】:

    • 虽然这行得通,但我会提醒人们不要将结果结晶到一个数组中只是为了对它们进行计数,但在使用游标遍历结果时保留行数可能会更好地记忆。
    【解决方案3】:

    您可以使用$result->count($foundOnly = true)

    【讨论】:

    • 请在您的答案中添加一些解释,以便其他人可以从中学习
    • 我认为这是不言自明的:)
    • 那么在“不言自明”的答案中包含$foundOnly 变量有什么意义?!
    • @ShahriyarImanov 它只是一个默认为假的标志。 $foundOnly 没有在任何地方定义,只是通过那种方式来清除标志的含义。现在够清楚了吗?
    猜你喜欢
    • 2014-12-15
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 2015-06-20
    相关资源
    最近更新 更多