Php 如何使用Propel 1.6';什么是自定义SQL?

Php 如何使用Propel 1.6';什么是自定义SQL?,php,sql,postgresql,propel,symfony-2.1,Php,Sql,Postgresql,Propel,Symfony 2.1,我在Symfony2中有一个项目,使用了Propel ORM 1.6和PostgreSQL。我试图通过以下方式从查询中获取行数: $con = Propel::getConnection(VerbNounPeer::DATABASE_NAME); $countSql = "SELECT COUNT(*) FROM (" ." SELECT DISTINCT ON (fk_noun_id) *" ." FROM verb_noun"

我在Symfony2中有一个项目,使用了Propel ORM 1.6和PostgreSQL。我试图通过以下方式从查询中获取行数:

$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类型的对象用作数组…”

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

$countSqlFormatter = new PropelArrayFormatter();
$countSqlRow = $countSqlFormatter->format($countSqlStmt);
但是,这也不起作用,因为我需要为数组指定一个条件,而且我不知道该放什么,因为我的查询结果只是一个带有计数值的行,而不是一个类。如果它是一个类,我会使用:

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

有什么想法吗?在中,但它对我没有多大帮助…

为了从PDO语句中获取数据,你必须调用它的方法。

为了从PDO语句中获取数据,你必须调用它的方法。

谢谢K-Phoen!这就是我们所缺少的!我想这毕竟是很基本的。。。以下工作:$countSqlStmt=$con->prepare($countSql)$countSqlStmt->execute()$countArray=$countSqlStmt->fetch()$recordsCount=$countSqlStmt[0];谢谢K-Phoen!这就是我们所缺少的!我想这毕竟是很基本的。。。以下工作:$countSqlStmt=$con->prepare($countSql)$countSqlStmt->execute()$countArray=$countSqlStmt->fetch()$recordsCount=$countSqlStmt[0];