我在这里尝试做一件非常简单的事情,但似乎我还无法获得 DQL。此外,当我在其中输入“DQL”时,谷歌决定通过返回“SQL”的结果来让我的一天变得艰难。
我有一个具有各种属性的 Article 实体。其中之一是关联的图像实体:
/**
* @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();
}
这返回了我这个错误:
渲染模板期间引发异常(“[Semantical Error] line 0, col -1 near 'SELECT a.title,': Error: Cannot select entity through identify variables without selection at least one root entity alias.” ) 在第 13 行的 PIFlexBlogBundle:Admin/Page:commentEdit.html.twig
当我添加a
我的“修复”时->select()
,它会为我选择所有文章字段,这正是我试图逃避的。
注意:我在 symfony2 存储库类中使用它。