如何很好地显示Doctrine2 Exceptions?

时间:2014-04-18 18:05:40

标签: php codeigniter symfony doctrine-orm dql

我有一个查询输出一些非常不方便的错误消息:

  

致命错误:未捕获的异常' Doctrine \ ORM \ Query \ QueryException'   使用消息' SELECT p,e,c FROM Entity \ Event e LEFT JOIN e.place p   INNER JOIN e.categories c与c成员:cat WHERE(e.dateStart   BETWEEN:来自AND:to)AND(p.latitude BETWEEN:minLat AND:maxLat)   AND(p.latitude BETWEEN:minLat AND:maxLat)AND(p.latitude BETWEEN   :minLat AND:maxLat)AND(p.longitude BETWEEN:minLng AND:maxLng)   订购e.dateStart ASC'在   /Users/YohannM/Sites/meetmyfriends-back/application/libraries/Doctrine/ORM/Query/QueryException.php:39Stack   跟踪:#0   /Users/YohannM/Sites/meetmyfriends-back/application/libraries/Doctrine/ORM/Query/Parser.php(429):   Doctrine \ ORM \ Query \ QueryException :: dqlError(' SELECT p,e,c ...')#1   /Users/YohannM/Sites/meetmyfriends-back/application/libraries/Doctrine/ORM/Query/Parser.php(528):   Doctrine \ ORM \ Query \ Parser-> semanticalError('':cat'不是d ...',   阵列)#2   /Users/YohannM/Sites/meetmyfriends-back/application/libraries/Doctrine/ORM/Query/Parser.php(233):   Doctrine \ ORM \ Query \ Parser-> _processDeferred in   /Users/YohannM/Sites/meetmyfriends-back/application/libraries/Doctrine/ORM/Query/QueryException.php   第49行

正如您所看到的,由于我的错误被截断,因此调试非常不方便:Parser->semanticalError('':cat' is not d...',

我试图破坏这种情况,但是因为返回的结果超过了1GB,Chrome崩溃了!

所以我的问题是,如何很好地输出错误。 我不使用symfony2但使用Codeingniter

由于

1 个答案:

答案 0 :(得分:1)

您不应使用vardump转储异常。许多Doctrine类是相互关联的,因此,当您尝试vardump异常时,它会创建一个递归,这就是您的浏览器耗尽可用内存和崩溃的原因。

Doctrine有一个实用程序,允许您转储相互链接的对象并指定递归级别。例如,要将对象和所有链接对象转储到最多5个级别,请使用以下命令:

\Doctrine\Common\Util\Debug::dump($object, 5);

默认深度级别为2.更多信息 - http://www.doctrine-project.org/api/common/2.4/class-Doctrine.Common.Util.Debug.html