如何选择count(字段)并仍然使用createQueryBuilder获取对象

时间:2014-03-22 07:12:13

标签: symfony orm query-builder

我想在twig中作为整个对象访问查询结果。但是,在查询中,我只想从表 + count 中选择几个字段。在我的例子中,我有一家公司,由业主拥有,并有几名员工。我想创建一个查询,它给出了按员工数量排序的公司列表。

$qb = $this->createQueryBuilder('c');
$qb->select('count(e.id), partial c.{id, name}, partial o.{id, name}');
$qb->leftJoin('c.employees', 'e');
$qb->innerJoin('c.owner', 'o');
$qb->groupBy('c.id');

查询工作正常,但是当我想访问公司实体中使用normaly的其他对象时(我有一个图像实体的集合,每个图像实体包含图像的路径),我得到一个错误。查询不会加载整个公司实体及其依赖项...我无法访问“firstImage”方法,该方法返回集合中的第一个图像。我收到此错误

  

键“0,1”的数组中的键“firstImage”不存在   MyBundle:列表:第6行的results.html.twig

请注意,省略“员工数量”会使整个工作完成。

$qb = $this->createQueryBuilder('c');
$qb->select('partial c.{id, name}, partial o.{id, name}');
$qb->leftJoin('c.employees', 'e');
$qb->innerJoin('c.owner', 'o');
$qb->groupBy('c.id');

1 个答案:

答案 0 :(得分:4)

您的对象将是结果数组的第一个元素,count()值将是第二个。您可以通过以下方式访问twig中的对象属性和方法:

{{ object[0].firstImage }}
{{ object[0].name }}

员工人数可以按以下方式访问:

{{ object[1] }}

您也可以在查询

中定义count()值的名称
$qb->select('count(e.id) AS empQty, partial c.{id, name}, partial o.{id, name}');

然后您可以在twig中访问此值:

{{ object['empQty'] }}