获取Doctrine 2实体插入的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 DoctrineDBALLoggingEchoSQLLogger());
$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

然后阅读这个文件,您将在其中找到每个已发出的查询。

相关内容

  • 没有找到相关文章

最新更新