11

OKなので、DoctrineDBALを使用してSELECTクエリから行数を数えるためのきちんとした短い方法を探しています。

できることはわかっていSELECT COUNT(*)ますが、結果をフェッチするときに配列を並べ替える必要があります。または、を調べることをお勧めしますgetScalarResult()。しかし、DQL(別のプロジェクト)以外では、これに関するドキュメントを見つけることができないようです。

では、これを行うための最も簡単な方法は何ですか?私は素晴らしいMySQLI属性に慣れているからだと思いますnum_rows

4

3 に答える 3

21

Doctrine DBALでこれを行う別の方法は、カウントをフィールドとして取得し、列を返すことです。

    $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);
于 2015-02-04T15:56:27.430 に答える
17

実は私は本当に一生懸命に見えたと思っていましたが、このカウントレコードがMySQLの教義を返したのに出くわしました

したがって、それを行う方法はrowCount()メソッドを介することです。

例:

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

于 2013-02-04T17:53:15.007 に答える
4

私はクエリビルダーを使うのを楽しんでいます。例:

    $queryBuilder = $connection->createQueryBuilder();
    $queryBuilder->select('COUNT(*)');
    $queryBuilder->from("the_table");
    $queryBuilder->where('some_column = :theValue');
    $queryBuilder->setParameter('theValue', $someValue);

    return (int) $queryBuilder->execute()->fetchColumn();
于 2019-11-30T13:17:04.127 に答える