douhuang5623 2014-04-18 18:05
浏览 33
已采纳

如何很好地显示Doctrine2 Exceptions?

I have a query that output some very inconvenient error message:

Fatal error: Uncaught exception 'Doctrine\ORM\Query\QueryException' with message 'SELECT p, e, c FROM Entity\Event e LEFT JOIN e.place p INNER JOIN e.categories c WITH c MEMBER OF :cat WHERE (e.dateStart BETWEEN :from 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) ORDER BY e.dateStart ASC' in /Users/YohannM/Sites/meetmyfriends-back/application/libraries/Doctrine/ORM/Query/QueryException.php:39Stack trace:#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' is not d...', Array)#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 on line 49

As you can see, this is very inconvenient for debugging as my errors are truncated: Parser->semanticalError('':cat' is not d...',.

I have tried to vardump the excpetion but chrome crashes as the results returned is over 1GB !!

So my question is, how do I output the errors nicely. I'm not working with symfony2 but with Codeingniter

Thanks

  • 写回答

1条回答 默认 最新

  • dq62957 2014-04-18 23:21
    关注

    You should not use vardump to dump an exception. Many Doctrine classes are interlinked, so, when you try to vardump an exception, it creates a recursion, and that is why your browser exhausts available memory and crashes.

    Doctrine has a utility that allows you to dump interlinked objects and specify the level of recursion. For example, to dump an object and all linked object up to 5 levels deep use this:

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

    The default depth level is 2. More info - http://www.doctrine-project.org/api/common/2.4/class-Doctrine.Common.Util.Debug.html

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?