Symfony 3-主义-大查询的困难

时间:2019-04-24 13:47:53

标签: php symfony count doctrine

我因为一个大范围的查询而烦恼。

她将使用几张桌子:

  • 用户
  • 包装
  • 用户类型
  • PackageDDLExternal(带有我添加了日期属性的外键User.id和Package.id)

此查询的目的是能够返回一个包含以下内容的列表:

不同的现有软件包,其下载次数,在一定时期内,按照下载次数的给定顺序(ASC或DESC)进行,所有这些都取决于其ID表已通过的用户类型参数。

所以,我:

Paquet:

enter image description here

键入Utilisateur:

enter image description here

用户:

enter image description here

TypeUtilisateur和Paquet之间的manyToMany关系:

enter image description here

和PackageDDLExternal:

enter image description here

所以我已经尝试创建此查询,但是一方面(在添加订单的级别上)似乎存在合成错误,而其他东西似乎会阻止...

public function getPackagesDDLBetween($debut, $fin,$typesUser,$ordre)
{
    $qb = $this->createQueryBuilder('p');

    $queryBuilder = $qb
    ->select("pa.titre, count(p.package)")
    ->join("p.package","pa")
    ->join("p.user","u")
    ->where("p.date between :debut and :fin")
    ->andWhere($qb->expr()->in("u.typeUser", $typesUser[0]))
    ->groupBy("pa.titre")
    ->orderBy("count(p.package) :ordre")
    ->setParameter('debut',$debut)
    ->setParameter('fin',$fin)
    ->setParameter('ordre', $ordre);
    return $queryBuilder->getQuery()->getResult();
}

使用$ order,会出现此错误:

  

[语法错误]行0,列213:错误:预期的已知功能,得到了   “计数”

但是没有它,我的结果就是空的

有人可以帮我吗?

编辑:查询几乎是好的。问题仍然存在:

->andWhere($qb->expr()->in("u.typeUser", $typesUser))

我的$ tabUser是值得的:

enter image description here

1 个答案:

答案 0 :(得分:3)

使用别名:

->select("pa.titre, count(p.package) as total")

按别名排序:

->orderBy("total", $ordre)