gpt4 book ai didi

php - Doctrine 2 按计数排序与 Symfony 2 Pagerfanta 的连接

转载 作者:行者123 更新时间:2023-11-30 00:06:14 25 4
gpt4 key购买 nike

我将 Symfony2 与 Doctrine 2 结合使用,并且正在为 Symfony 2 的 Pagerfanta Bundle 创建一个查询。

查询如下:

$qb = $this->createQueryBuilder('t')
->select()
->join('t.pois', 'p');
$qb->groupBy('t.id');
$qb->addOrderBy('count(case when p.image = 1 then 1 else null end)', 'DESC');

这将给出以下查询:

SELECT t FROM Bundle\Entity\Turn t INNER JOIN t.pois p GROUP BY t.id ORDER BY count(case when p.image = 1 then 1 else null end) DESC

我还首先创建了一个 MySQL 查询,以便我可以在 Doctrine 2 中重建它,如下所示:

SELECT *
FROM `turn`
LEFT JOIN (
poi
) ON ( turn.id = poi.turn_id )
GROUP BY turn.id
ORDER BY count( case when poi.image = 1 then 1 else null end) DESC;

这个原生查询工作得很好,在 phpmyadmin 中进行了测试。

但是 Doctrine 2 查询抛出了以下异常:

Twig_Error_Runtime: An exception has been thrown during the rendering of a template ("[Syntax Error] line 0, col 115: Error: Expected end of string, got '('") in Bundle:Admin:showTurnsFiltered.html.twig at line 64.

QueryException: [Syntax Error] line 0, col 115: Error: Expected end of string, got '('

我做错了什么?或者 Pagerfanta bundle 无法使用此查询?

最佳答案

我通过向 turn 实体 (count_poi) 添加一列并通过 native SQL 填充它来修复此问题。

之后的查询如下:

SELECT *
FROM `turn`
ORDER BY t.count_poi DESC;

但这只是一个解决方法,我对此不满意,但它现在有效

关于php - Doctrine 2 按计数排序与 Symfony 2 Pagerfanta 的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24527360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com