好吧,我正在寻找一种简洁而又简单的方法来统计使用Doctrine DBAL的SELECT查询的行数。使用Doctrine DBAL来统计SELECT查询中的行数
我知道我可以SELECT COUNT(*)
但我需要在获取结果时对数组进行排序。或者,有人建议查看getScalarResult()
。但我似乎无法找到关于此的任何文档,除了DQL(这是一个不同的项目)。
那么最简单的方法是什么?我想这是因为我已经习惯了很棒的MySQLI属性num_rows
!
好吧,我正在寻找一种简洁而又简单的方法来统计使用Doctrine DBAL的SELECT查询的行数。使用Doctrine DBAL来统计SELECT查询中的行数
我知道我可以SELECT COUNT(*)
但我需要在获取结果时对数组进行排序。或者,有人建议查看getScalarResult()
。但我似乎无法找到关于此的任何文档,除了DQL(这是一个不同的项目)。
那么最简单的方法是什么?我想这是因为我已经习惯了很棒的MySQLI属性num_rows
!
其实我想我已经看了真的很辛苦,但我只是碰到这个Count Records Returned MySQL Doctrine
于是方式做到这一点是通过rowCount()
方法。
例子:
$num_rows = $conn->executeQuery("SELECT * FROM users")->rowCount();
只有你无论如何需要获取记录才有意义。否则提取所有记录只是为了计算它们在PHP中的表现并不明智。 – eReiche
请注意rowCount对于所有数据库都不是100%可信的,其行为可能会根据您使用的数据库而改变。该评论是从该方法的源代码复制粘贴的。 ***如果由关联的Statement对象执行的最后一条SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数。但是,不能保证所有数据库的这种行为,并且不应该依赖便携式应用程序。 [链接](http://www.doctrine-project.org/api/dbal/2.4/source-class-Doctrine.DBAL.Driver.Statement.html#111-123)*** – casivaagustin
另一种方式与原则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);
推荐阅读http://stackoverflow.com/questions/883365/row-count-with-pdo这与doctrine DBAL的功能非常相似。 – fyrye