我很生气,因为一个大的查询,有点向四面八方。
她将使用几张桌子:
此查询的目的是返回包含以下内容的列表:
与下载次数不同的现有包,在一定时间内,按给定的顺序(ASC或DESC)下载,所有这些取决于ID表作为参数传递的用户类型。
所以我已经:
Paquet :

类型应用程序:

用户:

TypeUtilisateur与Paquet:的manyToMany关系

与PackageDDLExternal:

因此,我已经尝试创建了这个查询,但是一方面似乎存在synthax错误(在添加顺序的级别)和其他似乎阻止的事情.
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,col 213: Error:预期的已知函数,得到“计数”
但是如果没有它,我的结果就是空的。
有人能帮我吗?
编辑:查询几乎是好的。问题仍然是:
->andWhere($qb->expr()->in("u.typeUser", $typesUser))我的$ tabUser值得这样做:

发布于 2019-04-24 13:50:17
使用别名:
->select("pa.titre, count(p.package) as total")以别名订购:
->orderBy("total", $ordre)https://stackoverflow.com/questions/55831644
复制相似问题