この質問は、私が尋ねた (そして有効な回答を受け取った)ここのフォローアップです。
これを DQL に変換するにはどうすればよいですか? JOIN に関するドキュメントは、私には少しわかりにくいです。
編集:
私は Symfony2 で Doctrine を使用しており、次のエンティティがあります。
質問:
/**
* @ORM\Entity
* @ORM\Table(name="Question", indexes={@ORM\Index(name="id_idx", columns={"id"})})
*/
class Question
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string question
*
* @ORM\Column(name="question", type="string", length=255)
*/
private $question;
/**
* @var array scores
*
* @ORM\OneToMany(targetEntity="Score", mappedBy="question")
*/
private $scores;
// getters and setters
}
スコア:
/**
* @ORM\Entity
* @ORM\Table(name="Score", indexes={@ORM\Index(name="id_idx", columns={"id"})})
*/
class Score
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var integer $question
*
* @ORM\ManyToOne(targetEntity="Question", inversedBy="scores")
* @ORM\JoinColumn(name="question_id", referencedColumnName="id")
*/
private $question;
/**
* @var float score
*
* @ORM\Column(name="score", type="float")
*/
private $score;
// getters and setters
}
次のクエリを使用しました。
$query = $em->createQuery('SELECT q AS question, AVG(s.score) AS average FROM CMSBundle:Question q JOIN q.scores s GROUP BY q.id ORDER BY q.id ASC');
$questions = $query->getResult();
ただし、そのクエリでは、$questions に含まれる要素は 0 です。エラーも発生していません (少なくとも、PhpStorm がデバッガーで見つけることができるエラーはありません)。
クエリから文字通り何も得られない理由についてのフィードバックが不足しているため、少し途方に暮れています。どんな助けでも大歓迎です。