2016-05-04 10 views
2

を経由して制限を使用しているとき、私は教義に新たなんだ、とCriteriaと制限を使用しているとき、私はちょうどEntityRepository::matchingに(setMaxResults機能を経由して)結果の数を取得する方法を見つけることができませんでし総取得方法。ドクトリン2 - リポジトリ

public function getAll($query = null) { 
    if ($query instanceof Criteria) { 
     $users = $this->em->getRepository('App\Entities\User')->matching($query)->toArray(); 
    } else { 
     $users = $this->em->getRepository('App\Entities\User')->findAll(); 
    } 
    return $users; 
} 

は今言うことができます:私のリポジトリ(ないEntityRepositoryのextend)、私は(私はこれが、教義を学ぶためだけに使用される最適なコードではありません知っている)以下の使用していて

$query = Criteria::create(); 
$query->where(Criteria::expr()->contains('username', 'ron')); 
$query->setMaxResults(10); 

そして、それに一致する10人の以上のユーザーが実際にあります。基準がそうのように定義されています。

基準に合致するユーザーの総数を取得するにはどうすればよいですか?

答えて

0

maxResultsを10に設定すると、10個の結果が得られます。

getAll()に電話して結果を得て、後でMaxResultsを適用してみませんか?

//search for Ron's 
$query = Criteria::create(); 
$query->where(Criteria::expr()->contains('username', 'ron')); 

//check how many Ron's your database can find 
$count = $repo->getAll($query)->count(); 

//get the first 10 records 
$query->setMaxResults(10); 
$users = $repo->getAll($query); 
+0

私は、単一のクエリでそれを実行しようとしましたが、私はDoctrineは(制限なし)最初のクエリとしてないことCOUNT(*)は大きな「オーバーヘッド」影響を与えないように十分に速いと思います。ありがとう:) –