0

class.php ファイルの 1 つにある Symfony 1.4 プロジェクトでは、次のコードを使用してクエリを実行し、オブジェクトをフェッチしました。

$statement = Doctrine_Manager::connection()->execute($query);
$resultset = $statement->fetchAll(PDO::FETCH_OBJ);

実行時の例外をキャッチするために、try-catch ブロックを使用しようとしました。私は簡単に最初の行でそれを行うことができます

    try {
        $statement = Doctrine_Manager::connection()->execute($query);
    } 
    catch (Exception $exc) {
        echo "custom error message";
    }

しかし、これは 2 行目では機能しません。ページを実行すると、常に次のエラーが表示されます

致命的なエラー: 非オブジェクトに対するメンバー関数 fetchAll() の呼び出し

\lib\model\doctrine\DeductionInfo.class.php 104 行目

どうすればこれを解決できますか?

4

1 に答える 1

1

もちろん、無効なクエリなどのようで、var $statement にオブジェクトが含まれていません。最初に $statement 変数をデバッグまたは var_dump します。

Doctrine btw は PDO の上にあります。デフォルトでは、PDO コンストラクトはエラー時に例外をスローします。ただし、try-catch ステートメントを使用する場合は、クエリのエラー処理を例外 ( http://php.net/manual/en/pdo.error-handling.php ) に設定する必要があります。Doctrine 1 がこれをどのように処理するか正確にはわかりません。

于 2013-06-19T06:36:36.250 に答える