2011-12-27 5 views
0

여기하는 ManyToMany 관계 사이에 내 코드의 조각 쿼리를 만들 DQL을 사용하기 위해 노력하고있어에서 오류 메시지를 사용자 지정하는 방법 :Symfony2

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

그것은 정말 기본 SQL 라인이다, 그러나 항상 I 이 이상한 오류가 발생합니다 :

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

500 내부 서버 오류 - QueryException

누군가가 무엇을하시기 바랍니다 의미와 해결 방법을 말해 수 있습니까? 감사합니다.

+1

나는 당신이 정말 당신이 요구하는 실제 것와 일치하지 않는 질문의 제목을 변경 할 수 있습니다 생각 :

DQL에 대해 명심해야 할 한 가지 중요한 점은있다. (오류 메시지를 이해하는 데 도움이 필요 하나 커스터마이징이 필요하지 않습니다.) – MrGlass

답변

2

SQL과 DQL을 혼합했습니다. DQL에는 객체 모델로 작업하기 때문에 "*"가 없습니다. 올바른 구문은 "SELECT q FROM TestGroupBundle:Question q"입니다. 결과는 \Doctrine\Common\Collections\ArrayCollection 개체에 래핑됩니다. 개체를 반복하여 결과를 얻을 수 있습니다.

A common mistake for beginners is to mistake DQL for being just some form of SQL and therefore trying to use table names and column names or join arbitrary tables together in a query. You need to think about DQL as a query language for your object model, not for your relational schema.

+0

감사합니다. –

+1

@Katcha 문제가 없습니다. 정답을 수락하는 것을 잊지 마세요 :) – gilden

0

Doctrine은 항상 네임 스페이스 바로 가기를 올바르게 구문 분석하지 않습니다. TestGroupBundle:Question 대신 전체 네임 스페이스를 사용해보십시오