Php 从ORM捕获SQL通知

Php 从ORM捕获SQL通知,php,sql,postgresql,propel,Php,Sql,Postgresql,Propel,我有一个很大的SQL函数,我想通过PHP/SPRIPE在PostgreSQL数据库上执行,使用如下语句: $sql = "lots of SQL statements"; $statement = $propelPDO->prepare($sql); $statement->execute(); 在我试图执行的SQL语句中,有许多对“raiseinfo…”和“raisewarning…”的调用,它们显示调试信息。从命令行执行SQL时,我可以看到以下有助于调试SQL的注意事项: ps

我有一个很大的SQL函数,我想通过PHP/SPRIPE在PostgreSQL数据库上执行,使用如下语句:

$sql = "lots of SQL statements";
$statement = $propelPDO->prepare($sql);
$statement->execute();
在我试图执行的SQL语句中,有许多对“raiseinfo…”和“raisewarning…”的调用,它们显示调试信息。从命令行执行SQL时,我可以看到以下有助于调试SQL的注意事项:

psql -h hostname database username < lots_of_sql_statements.sql
psql-h主机名数据库用户名

我的问题:是否有任何方法可以从PHP捕获SQL中提出的信息和警告通知,以便我可以将它们记录下来供以后分析?我在许多不同的记录上运行SQL,如果能够记录这些通知,而不必逐个进入命令行查看调试信息,那就太好了。

如果您使用实际的推进对象,您可以通过捕获
proplexception来捕获消息

try {
    $propelObject
        ->setSomething('foo')
        ->save()
    ;
} catch (PropelException $pe) {
    someLoggingFunction($pe->getMessage());
}
否则,您仅限于PDO错误处理功能:


我不知道这些raise info或rais warning是否会引发异常,因为它们没有阻止sql语句。这可能是最好的答案,因此我已将其标记为已接受。尽管如此,PDO在执行SQL时没有给出获取这些信息的方法,这还是相当令人失望的。对于任何感兴趣的人,我发现了一个在PHP中实现这种行为的RFC计划(我收集到的信息表明它还没有完成)。不鼓励RFC是在2009年写的。。。