web-dev-qa-db-ja.com

結果セットのサイズをdoctrine 2?

リポジトリクラスのfindByメソッドを使用している場合、結果セットのサイズを制限するにはどうすればよいですか?

50
blacktie24

In Doctrine 2.1メソッドEntityRepository#findBy()は、順序、制限、オフセットの追加パラメータを受け入れるようになりました。

doctrine 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
);
125

Doctrine Query Language の場合:

QueryBuilder::setMaxResults(integer $maxResults)
5
Jarzon

汎用リポジトリクラスのfindBy()メソッドはこれをサポートしていません。

独自のリポジトリを作成し( ここに概要を示します )、findBy()をオーバーライドして追加のパラメータを取得します。新しい実装では、クエリビルダーまたはplain-old-DQLを使用して適切なクエリを構築できます。 (おそらく$ critera paramを QueryBuilder :: where() に直接渡すことができるので、クエリビルダーを使用します)

4
timdev