簡體   English   中英

使用 Doctrine DBAL 從 SELECT 查詢中計算行數

[英]Using Doctrine DBAL to count number of rows from SELECT query

好的,所以我正在尋找一種簡潔的方法來計算使用 Doctrine DBAL 的 SELECT 查詢的行數。

我知道我可以SELECT COUNT(*)但是當我獲取結果時我需要對數組進行排序。 或者,建議查看getScalarResult() 但除了 DQL(這是一個不同的項目)之外,我似乎找不到任何關於此的文檔。

那么最簡潔的方法是什么? 我想這是因為我習慣了很棒的 MySQLI 屬性num_rows

使用 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);

其實我以為我看起來真的很努力,但我剛剛遇到了這個計數記錄返回的 MySQL Doctrine

所以這樣做的方法是通過rowCount()方法。

例子:

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

我喜歡使用查詢構建器。 一個例子:

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

    return (int) $queryBuilder->execute()->fetchColumn();

這是 Doctrine DBAL >= 2.13的@DonkeyKong 答案的更新版本:

$sql = "SELECT count(*) AS Total FROM myTable WHERE myId = :myId";
$stmt = $conn->prepare($sql);
$stmt->bindValue('myId', $myId, PDO::PARAM_INT);
$result = $stmt->executeQuery();
$count = $result->fetchOne();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM