教义 2 - 从 $em->find() 获取 SQL

Posted

技术标签:

【中文标题】教义 2 - 从 $em->find() 获取 SQL【英文标题】:Doctrine 2 - getSQL from $em->find() 【发布时间】:2012-07-20 21:08:56 【问题描述】:

谁能告诉我,如何从$em->find() 方法中获取纯SQL?

【问题讨论】:

为什么需要这个?出于调试目的?如果那是您想要做的,我建议您使用 mysql 查询日志。 @Max 是的,但是如果我不使用 MySql 会怎样:>? 你应该,它有一个查询日志:> @Max 是的,但我认为 PostgreSQL 比 MySQL 更好(虽然我现在使用的是 MySQL)。不过,我需要针对这个问题的通用解决方案。 @Max And... 我想从浏览器中检查 SQL 查询。 【参考方案1】:

你的问题不清楚。

如果您的意思是“是否可以使用原始 SQL 查找对象”,请查看 Native SQL section in the Doctrine 2 documentation; 如果您的意思是“是否可以查看由 Doctrine 查询生成的 SQL”,请配置 SQL 记录器,如 this answer 中所述。

【讨论】:

我知道,使用getSQL() 方法从$entity_manager->createQuery() 获取原始SQL 是可能的。我在问,是否可以从 $entity_manager->find() 方法获取原始 SQL。 SQL 记录器为您提供由 Doctrine 2 生成的所有个查询的输出。如果您只需要此信息进行调试,那就可以了。 你能给我一些关于如何使用它的说明吗? $em->getConfiguration()->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger); 好的,我怎样才能从这个记录器中获取这些 SQL 查询?

以上是关于教义 2 - 从 $em->find() 获取 SQL的主要内容,如果未能解决你的问题,请参考以下文章

教义坚持+坚持=插入+插入?

教义一对多关系

教义:设置主键

教义 2 - 获取所有记录

教义 - 按计数分组

教义 setParameter 和无效参数号