0

我收到以下错误:

[语义错误] line 0, col 15 near 'question_id)': Error: Class Acme\MyBundle\Entity\SurveysQuestions 没有名为 question_id 的字段或关联

我正在查看PhpMyAdmin 中的 SurveysQuestions,是的,它有一个 question_id 字段:

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'

不知道我做错了什么......

4

1 回答 1

1

您正在编写 SQL,但 Doctrine 需要 DQL,您应该阅读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% 确定的。

于 2013-07-04T10:13:18.643 回答