如何限制学说2中结果集的大小?

时间:2011-04-12 19:50:18

标签: php orm doctrine-orm

如果我正在使用存储库类的findBy方法,我该如何限制结果集的大小?

3 个答案:

答案 0 :(得分:124)

在Doctrine 2.1方法中,EntityRepository#findBy()现在接受有关排序,限制和偏移的其他参数。

see full list new features in doctrine 2.1 (404) Relevant link to findBy and findOneBy

示例:

 public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)

用法:

$product = $repository->findBy(
    array('name' => 'foo'),
    array('price' => 'ASC'),
    $myLimit,
    $myOffset
);

答案 1 :(得分:4)

对于Doctrine Query Language,你有:

QueryBuilder::setMaxResults(integer $maxResults)

答案 2 :(得分:3)

通用存储库类的findBy()方法不支持此功能。

我会编写您自己的存储库(作为outlined here)并覆盖findBy()以获取其他参数。您的新实现可以使用查询构建器或plain-old-DQL来构建正确的查询。 (我会使用querybuilder,因为你可以直接将$ critera param传递给QueryBuilder::where()