代码之家  ›  专栏  ›  技术社区  ›  famas23

symfony主义取最近的客体结果:having子句

  •  0
  • famas23  · 技术社区  · 6 年前

    我正试图从数据库中获取最近的文档,我已经创建了 queryBuilder 去拿文件 obeject 但如果我加上这个条款的话,效果似乎不太好 Having
    我的问题是:

        $qb = $this->createQueryBuilder('sm');
    
        $qb
            ->andWhere('sm.supplier = :supplier')
            ->setParameter('supplier', $supplierId)
            ->andHaving('MAX(sm.createdAt)')
            ->groupBy('sm.id');
        return $qb->getQuery()->getOneOrNullResult();
    

    这是我得到的例外:

    {“code”:500,“message”:“[语法错误]行0,列1:错误:应输入 =,<,<=,<gt;,>,>=,!=,得到字符串结尾。“}

    这是我的 DQL :
    "SELECT sm FROM SupplierBundle\\Entity\\SupplierMedia sm WHERE sm.supplier = :supplier AND sm.type = :type GROUP BY sm.id HAVING MAX(sm.createdAt)"

    2 回复  |  直到 6 年前
        1
  •  1
  •   Vadim Ashikhman    6 年前

    HAVING 表达式定义将在之后应用于结果集的条件 WHERE GROUP BY

    如果您只需要从表中获取最后一条记录,请应用限制并按顺序排序。

        2
  •  1
  •   M Khalid Junaid    6 年前

    要获取每个供应商的最新对象,可以使用自连接方法

    SELECT a 
    FROM  SupplierBundle\Entity\SupplierMedia a
        LEFT JOIN SupplierBundle\Entity\SupplierMedia b 
        WITH a.supplier = b.supplier 
        AND a.createdAt < b.createdAt
    WHERE b.createdAt IS NULL
    AND a.supplier = :supplier 
    AND a.type = :type
    

    Doctrine Query Language get Max/Latest Row Per Group