我在 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()但这对我没有太大帮助...