php-如何在准则2中限制结果集的大小?

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

blacktie24 asked 2020-01-23T20:12:31Z
3个解决方案
126 votes

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

查看准则2.1(404)的完整列表新功能findBy和findOneBy的相关链接

例:

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

用法:

$product = $repository->findBy(
    array('name' => 'foo'),
    array('price' => 'ASC'),
    $myLimit,
    $myOffset
);
Nikolai Senkevich answered 2020-01-23T20:13:04Z
5 votes

对于学说查询语言,您可以:

QueryBuilder::setMaxResults(integer $maxResults)
Jarzon answered 2020-01-23T20:13:24Z
4 votes

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

我将编写您自己的存储库(如此处概述),并重写findBy()以采用其他参数。 您的新实现可以使用查询生成器或Plain-old-DQL来构建正确的查询。 (我将使用querybuilder,因为您可能只是将$ critera参数直接传递到QueryBuilder :: where()中)

timdev answered 2020-01-23T20:13:49Z
translate from https://stackoverflow.com:/questions/5640768/how-to-limit-size-of-result-set-in-doctrine-2