1

我在 Symfony2 中有一个使用 Propel ORM 1.6 和 PostgreSQL 的项目。我正在尝试使用自定义 SQL 从查询中获取行数,如此链接中所示,方法如下:

$con = Propel::getConnection(VerbNounPeer::DATABASE_NAME);
$countSql = "SELECT COUNT(*) FROM ("
               ." SELECT DISTINCT ON (fk_noun_id) *"
               ." FROM verb_noun"
               ." ORDER BY fk_noun_id, verb_noun_vote_count DESC"
               .") inner_tb";
$countSqlStmt = $con->prepare($countSql);
$countSqlStmt->execute();

上面的查询工作正常。但是,如何从 stmt(上面的 $countSqlStmt)对象中获取行数的整数值?我尝试使用:

$recordsCount = $countSqlStmt[0];

但是,鉴于 $countSqlStmt 是一个对象而不是数组,我得到“致命错误:无法使用 DebugPDOStatement 类型的对象作为数组...”

我还尝试使用 Propel 的格式化程序将其转换为数组:

$countSqlFormatter = new PropelArrayFormatter();
$countSqlRow = $countSqlFormatter->format($countSqlStmt);

但是,这也不起作用,因为我需要为数组指定一个条件,而且我不知道该放什么,因为我的查询结果只是具有计数值而不是类的行。如果它是一个类,我会使用:

$formatter->setClass('VendorName\NameBundle\Model\VerbNoun');

有任何想法吗?在此链接中使用了 PropelArrayFormatter()但这对我没有太大帮助...

4

1 回答 1

1

为了从 PDOStatement 中获取数据,您必须调用fetch它的方法。

于 2012-07-16T07:53:53.633 回答