11

好的,所以我正在寻找一种简洁的方法来计算使用 Doctrine DBAL 的 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

其实我以为我看起来很努力,但我只是偶然发现了这个Count Records Returned MySQL Doctrine

所以方法就是通过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 回答