PHP ORM である Doctrine を使用する場合、データベースに送信された生の SQL を調べて、その内容を確認する必要がある場合があります。構文を変更したり、パフォーマンスを最適化したりできます。ただし、$q->getSQLQuery() メソッドはプリペアド ステートメントのみを返すため、実際のパラメータではなく疑問符 (?) が残ります。
この理由は、Doctrine がプリペアド ステートメントを利用しているためです。データベースのセキュリティとパフォーマンスを強化します。クエリ プロセスは、ステートメントの準備とパラメータの送信という 2 つのステップに分割されます。 $query->getSql() メソッドは準備されたステートメントのみを返しますが、$query->getParameters() メソッドは実際の値を提供します。
したがって、「実際の」SQL クエリは存在しません。 PHP 側で問題が発生し、Doctrine では表示できません。代わりに、$query->getParameters() から取得したパラメータを使用してクエリを手動で構築するか、MySQL の EXPLAIN PLAN などのツールを使用してクエリの実行をトレースする必要があります。
以上がDoctrine で実際の SQL クエリを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。