我使用Propel ORM 1.6和PostgreSQL在Symfony2中有一个项目。我试图通过以下方式从查询using Custom SQL as shown in this link获取行数:
$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');
有什么想法吗?在this link there is a use of PropelArrayFormatter()但对我来说没什么帮助......