【问题标题】:Symfony 3 - Doctrine - Difficulties on big querySymfony 3 - 教义 - 大查询的困难
【发布时间】:2019-04-25 15:26:53
【问题描述】:

我很生气,因为一个很大的查询向各个方向发展。

她将使用几张桌子:

  • 用户
  • 用户类型
  • PackageDDLExternal(带有外键 User.id 和 Package.id,我在其中添加了日期属性)

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

不同的现有软件包及其下载次数,在一段时间内,下载次数具有给定的顺序(ASC 或 DESC),所有这些都取决于 ID 表已传递为的用户类型参数。

所以,我已经:

帕奎特:

输入 Utilisateur :

用户:

TypeUtilisateur 和 Paquet 之间的多对多关系:

还有 PackageDDLExternal:

所以我已经尝试过创建这个查询,但是一方面(在添加订单的级别)似乎存在语法错误以及其他似乎阻塞的事情......

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,我得到这个错误:

[语法错误] line 0, col 213: Error: Expected known function, got '计数'

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

有人可以帮帮我吗?

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

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

我的 $tabUser 值得这样做:

【问题讨论】:

    标签: php symfony count doctrine


    【解决方案1】:

    使用别名:

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

    按别名排序:

    ->orderBy("total", $ordre)
    

    【讨论】:

    • 更好,但我有这个:[语法错误]第 0 行,第 249 列:错误:预期的字符串结尾,得到 ':ordre'。我的 $ordre 是“DESC”或“ASC”,为什么会出现这个问题?
    • 使用 ->orderBy("total", $ordre) 而不是 `->orderBy("total :order") (对我来说太快了 Andrei Lupuleasa)
    • 好的,谢谢,我现在没有出错。但是,我的结果是 null :(
    • $queryBuilder->getQuery()->getSql()$queryBuilder->getQuery()->getParameters() 上执行var_dump 并调试
    • 好吧,我做了一个 var_dump,我认为我的 ->andWhere($qb->expr()->in("u.typeUser", $typesUser)) 不好。但在 4 小时内,我并没有设法解决问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    相关资源
    最近更新 更多