ここでは非常に単純なことをしようとしていますが、まだDQLを取得できないようです。さらに、グーグルは、私が「DQL」と入力したときに「SQL」の結果を返すことによって、私の一日を困難にすることにしました。
さまざまなプロパティを持つArticleエンティティがあります。それらの1つは、関連付けられたImageエンティティです。
/**
* @ORM\ManyToOne(targetEntity="Image", inversedBy="articles")
*/
protected $image;
さて、遅延読み込みとそれが生成する不要な読み込みを防ぐために、 Article.titleとArticle.imageを取得してこれを実行したいと思います。記事の名前とそれに関連する画像(画像エンティティ全体)。
それ、どうやったら出来るの?何かが実際に機能し、なぜそれが機能するのか、他のことが機能しないのかを調べることができることを期待して、思いついたすべてを試しましたが、うまく機能させることができません。
これが私が思いついたクエリの最も正しいバージョンですが、それが機能する場合に限ります。
public function getTitleBackground($id)
{
$qb = $this->createQueryBuilder('a')
->select('a.title, a.id', 'i')
->leftJoin('a.image', 'i')
->where('a.id = :id')
->setParameter('id', $id);
return $qb->getQuery()->getResult();
}
これは私にこのエラーを返します:
テンプレートのレンダリング中に例外がスローされました(「[SemanticalError] line 0、col -1 near'SELECT a.title、':Error:Cannot select entity through the Identification Variableswithout少なくとも1つのルートエンティティエイリアスを選択する必要があります。」 )PIFlexBlogBundle:Admin / Page:commentEdit.html.twigの13行目
a
これは、追加すると「修正」されます->select()
が、すべての記事フィールドが選択されます。これは、回避しようとしているものです。
注:私はこれをsymfony2リポジトリクラス内で使用しています。