Propel ORM 1.6 と PostgreSQL を使用して Symfony2 にプロジェクトがあります。このリンクに示されているように、次の方法でカスタム 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() の使用がありますが、私にはあまり役に立ちませんでした...