php - 来自子查询的 Doctrine QueryBuilder

标签 php mysql doctrine query-builder

我需要编写一些复杂的查询生成器表达式。 sql 如下所示:

SELECT query,popularity,nb_words
FROM gemini_suggestion    
WHERE query IN    
(
    SELECT * FROM    
    (   
        SELECT query    
        FROM gemini_suggestion    
        GROUP BY query    
        HAVING COUNT(query) > 1    
    ) AS subquery    
);

我卡住的代码是:

$queryBuilder = $em->createQueryBuilder();
$queryBuilder->select('a')
    ->from($this->entity['class'], 'a')
    ->where($queryBuilder->expr()->In('a.query', $subQuery->getDQL()));

$subQuery2 = $em->createQueryBuilder()
    ->select('b.query')
    ->from($this->entity['class'], 'b')
    ->groupBy('b.query')
    ->having('count(b.query)>1')
;

$subQuery = $em->createQueryBuilder();
$subQuery->select('a')
    ->from(...)
;

任何帮助都会很好!

最佳答案

你可以尝试这样的事情。我假设您有一个 namespace 实体,其中包含所有实体类。

// Subquery to get the queries greater than 1
$subQueryBuilder = $this->entityManager->createQueryBuilder();
$subQueryBuilder->select('gemini_suggestion.query')
                ->from('Entities\gemini_suggestion', 'gemini_suggestion')
                ->groupBy('gemini_suggestion.query')
                ->having($subQueryBuilder->expr()->gt('COUNT(gemini_suggestion.query)', 1));

// Main query where you use the subquery to filter out the records you want
$queryBuilder = $this->entityManager->createQueryBuilder();
$queryBuilder->select('query, popularity, nb_words')
             ->from('Entities\gemini_suggestion', 'gemini_suggestion')
             ->where($queryBuilder->expr()->in('gemini_suggestion.query', $subQueryBuilder->getDQL()));

$result = $queryBuilder->getQuery()->getResult();
return $result;

关于php - 来自子查询的 Doctrine QueryBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52760053/

相关文章:

php - 为什么MySQL不支持毫秒/微秒精度?

php - 哪种方法最适合将谷歌分析数据导出到我的自定义仪表板

php - 在 Windows 中运行 linux 开发环境的最快方法

MySql如何返回包含所有选定功能的所有项目

php - 我如何在 symfony2 中使用 DQL 获得单个结果

php - 如何使用 Symfony ACL 过滤我的 Doctrine 查询

php - 从字符串中删除文本

php - 如何使用laravel查询构建器在json数组对象中搜索?

javascript - 使用 botpress 和 mysql 连接聊天机器人

mysql - 使用 SUM() 连接多个表