2013-07-04 6 views
0

존재에도 불구하고 의미 론적 오류 : 예, 그것은 question_id을 가지고,Doctrine2 - 오류에 열이 나는 다음과 같은 오류 받고 있어요

[Semantical Error] line 0, col 15 near 'question_id)': Error: Class Acme\MyBundle\Entity\SurveysQuestions has no field or association named question_id

내가 가 phpMyAdmin을에서 SurveysQuestions에서을 찾고 있어요, 그리고 필드 :

survey_id  question_id  score 
7    1     3.5 
7    2     4 

etc. 

쿼리는 다음과 같습니다

'SELECT COUNT(sq.question_id) AS votes, sq.score AS score, q.question FROM MyBundle:SurveysQuestions sq LEFT OUTER JOIN sq.question q WHERE q.id = :id AND q.deletedAt IS NULL GROUP BY q.id, sq.score ORDER BY sq.score DESC' 

아니다 내가 잘못하고있는 일이 무엇인지 ....

답변

1

Doctrine은 DQL을 기대하지만 Doctrine은 Doctrine Query Language 장을 읽어야합니다. 나는 당신의 쿼리에서 한 눈에서 볼

두 가지 문제가 :

  • 당신은 테이블 컬럼 (sq.question_id)에 쿼리 안된다, 당신은 클래스 속성에 조회 할 수 있습니다. sq.question_id 열은 클래스에 존재하지 않는 외래 키이므로 q.id를 사용하려고합니다.

  • 엔터티 대신 특정 필드를 선택하기 때문에 개체 대신 배열을 반환 할 COUNT() 및 sq.score 필드를 선택합니다. 배열을 원한다면 괜찮습니다.하지만 객체를 원하면 "SELECT COUNT (q.id) as votes, sq ..."라고 써야합니다. 이 두 필드 만 필요하지만 여전히 개체를 수신하려면 부분 구문 "SELECT PARTIAL COUNT (q.id), sq. {score}"를 사용해야합니다.

  • Doctrine이 LEFT를 허용하는지 확실하지 않습니다. OUTER JOIN, LEFT JOIN 만 허용한다고 생각합니다. 그러나 이것은 100 % 확실하지 않습니다.

관련 문제