2013-02-04 34 views
8

OKこれで、Doctrine DBALを使用してSELECTクエリから行数を数える簡単で短時間の方法を探しています。Doctrine DBALを使用してSELECTクエリの行数をカウントする

私はSELECT COUNT(*)が可能だと知っていますが、結果を取得するときに配列をソートする必要があります。または、getScalarResult()にお問い合わせください。しかし、DQL(これは別のプロジェクトです)以外では、これに関するドキュメントを見つけることはできません。

これを行う最もきれいな方法は何ですか?私はそれが偉大なMySQLI属性num_rowsに慣れているからだと思います!

+0

を返すことです/ questions/883365/row-count-with-pdoはdoctrine DBALの機能と非常によく似ています。 – fyrye

答えて

10

は、実際に私は、私は本当にハードに見えたと思ったが、私はちょうどので、それを行う方法がrowCount()メソッドを介してであるこのCount Records Returned MySQL Doctrine

に出くわしました。

例:教義DBALでこれを行うには

$num_rows = $conn->executeQuery("SELECT * FROM users")->rowCount();

+5

これは、レコードをフェッチする必要がある場合にのみ意味があります。それ以外の場合は、PHPでカウントするためにすべてのレコードを取得することは、性能上問題があります。 – eReiche

+5

rowCountはすべてのデータベースで100%信頼できるわけではないことに注意してください。動作は使用しているデータベースによって異なる場合があります。このコメントは、メソッドのソースコードから貼り付けられたコピーです。 ***関連するStatementオブジェクトによって実行された最後のSQL文がSELECT文の場合、一部のデータベースはその文によって返された行数を返すことがあります。ただし、この動作はすべてのデータベースで保証されるものではなく、ポータブルアプリケーションには依存しないでください。 [link](http://www.doctrine-project.org/api/dbal/2.4/source-class-Doctrine.DBAL.Driver.Statement.html#111-123)*** – casivaagustin

15

もう一つの方法は、http://stackoverflow.comを読んで提案する場としてカウントを取得し、コラム

$sql = "SELECT count(*) AS Total FROM myTable WHERE myId = :myId"; 
    $stmt = $conn->prepare($sql); 
    $stmt->bindValue('myId', $myId, PDO::PARAM_INT); 
    $stmt->execute(); 
    $count = $stmt->fetchColumn(0); 
関連する問題