Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to limit size of result set in doctrine 2?

In Doctrine 2.1 method EntityRepository#findBy() now accepts additional parameters for ordering, limit and offset.

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

example:

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

usage:

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

For Doctrine Query Language you have:

QueryBuilder::setMaxResults(integer $maxResults)

The findBy() method of the generic repository class doesn't support this.

I would write your own repository (as outlined here) and override findBy() to take additional parameters. Your new implementation could use the query builder, or plain-old-DQL to build up the proper query. (I'd use the querybuilder, as you can probably just pass the $critera param right into QueryBuilder::where())