Symfony2 - 实体回购中的自定义查询似乎没有返回预期结果

时间:2012-03-21 12:18:42

标签: php symfony doctrine

所以我来到了一个需要在我的Entity Repository中创建自定义查询来进行子选择的地方。

查询本身看起来很健全,确实找到了我想要的结果(我通过在Navicat中运行查询来检查)但是,当试图查看结果时(使用Twig模板)我收到以下错误:

  

DEMODemoBundle中的“数组”项目“id”:员工/公司:company.html.twig第42行

该模板中的第42行是:

<td><a href="{{ path('staff_company_show', { 'id': entity.id }) }}">{{ entity.id }}</a></td>

以前,我在我的控制器中使用了一个基本的“findAll”查询,并且Twig模板工作正常(它使用for循环来查看结果并打印出一个表)

所以,我假设如果我的自定义查询获取了一个结果列表,所有相同的列(在子选择中只添加1个,而不是提到的ID)那么一切都应该没问题!< / p>

但显然不是。由于某些原因,似乎有另一个阵列级别,我不确定为什么?

这是我在repo中的自定义查询(它执行sub select以创建parent_name列):

public function getCompanyWithParent()
{
    $dql = 'SELECT c, (SELECT p.name FROM DEMO\DemoBundle\Entity\User\Company p WHERE p.id = c.parent) as parent_name FROM DEMO\DemoBundle\Entity\User\Company c';

    $query = $this->getEntityManager()->createQuery($dql);

    return $query->getArrayResult();
}

我试过了两个:

return $query->getArrayResult();

return $query->getResult();

但无济于事。

任何想法的人?

1 个答案:

答案 0 :(得分:0)

对它进行排序。似乎我必须指定我想要通过的列,例如SELECT c.id,c.name ...,遗憾的是不能只使用SELECT c,... FROM ...