Doctrine 2エンティティ挿入のSQLを取得することは可能ですか?
たとえば、私がこれを持っているとしましょう:
$foo = new Foo();
$foo->setName('bar');
$em->persist($foo);
$em->flush();
そこでINSERTステートメントのSQLを取得する方法はありますか?もしそうなら、どのように?
Doctrine 2エンティティ挿入のSQLを取得することは可能ですか?
たとえば、私がこれを持っているとしましょう:
$foo = new Foo();
$foo->setName('bar');
$em->persist($foo);
$em->flush();
そこでINSERTステートメントのSQLを取得する方法はありますか?もしそうなら、どのように?
SQL-Loggerを試すことができます。
$em->flush(); // to write cached stuff down and isolate the following
// activate logger
$em->getConnection()
->getConfiguration()
->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger());
$foo = new Foo();
$foo->setName('bar');
$em->persist($foo);
$em->flush();
// disable logger
$em->getConnection()
->getConfiguration()
->setSQLLogger(null);
MySQL以外のDBMSでも動作します。ファイルに書き込む他の可能性もあります。ここを見て:
https://www.brunsware.de/blog/symfony/monolog-doctrine-logfile.html
http://vvv.tobiassjosten.net/symfony/logging-doctrine-queries-in-symfony2/
MySQLサーバーでクエリログをアクティブ化できます(それだと思います):/ etc / mysql / my.ini(通常の場所):
[mysqld]
log=/tmp/mysql.log
次に、このファイルを読んで、発行された各クエリを見つけます。