所以我来到了一个需要在我的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();
但无济于事。
任何想法的人?
答案 0 :(得分:0)
对它进行排序。似乎我必须指定我想要通过的列,例如SELECT c.id,c.name ...,遗憾的是不能只使用SELECT c,... FROM ...