如何在Symfony2上自定义错误消息

时间:2011-12-27 14:17:55

标签: many-to-many symfony doctrine-orm relation

我正在尝试使用DQL在ManyToMany关系之间创建一个查询,这里是我的代码片段:

$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery("SELECT * FROM TestGroupBundle:Question");

这是一个非常基本的SQL行,但我总是遇到这个奇怪的错误:

[Syntax Error] line 0, col 7: Error: Expected IdentificationVariable | StateFieldPathExpression | AggregateExpression | "(" Subselect ")" | ScalarExpression, got '*'

500内部服务器错误 - QueryException

有人可以告诉我这是什么意思,以及如何解决它?感谢

2 个答案:

答案 0 :(得分:2)

你正在混淆SQL和DQL。由于您正在使用对象模型,因此DQL中没有“*”。正确的语法是"SELECT q FROM TestGroupBundle:Question q"。结果包含在\Doctrine\Common\Collections\ArrayCollection对象中。您可以迭代对象以获得结果。

关于DQL需要记住一件重要的事情:

  

初学者的一个常见错误是将DQL误认为只是某种形式的SQL,因此尝试在查询中使用表名和列名或将任意表连接在一起。您需要将DQL视为对象模型的查询语言,而不是关系模式。

答案 1 :(得分:0)

Doctrine并不总是正确地解析命名空间快捷方式。尝试使用完整命名空间而不是TestGroupBundle:Question