Symfony2 KNP 分页“无法计数查询”

Posted

技术标签:

【中文标题】Symfony2 KNP 分页“无法计数查询”【英文标题】:Symfony2 KNP Pagination "Cannot count query " 【发布时间】:2014-08-13 15:14:00 【问题描述】:

所以,我正在开发一个新闻门户。我正在使用 KNP Paginator,但出现错误: 无法统计选择两个 FROM 组件的查询,无法区分

现在,我的源代码:

    #block of code from controller

    $rep = $this->getDoctrine()->getRepository('NickCoreBundle:News');
    $user = $this->get('security.context')->getToken()->getUser();
    $paginator  = $this->get('knp_paginator');
    $pagination = $paginator->paginate(
        $rep->getNewsFeedQuery($user->getId()),
        $page,
        10
    );

来自我的存储库:

public function getNewsFeedQuery($userid)

    $userid = intval($userid);

    return $this->getEntityManager()->createQueryBuilder()
        ->select('n')
        ->from('NickCoreBundle:News', 'n')
        ->innerJoin('NickCoreBundle:Subscriptions', 's', 'WITH', 's.user = :userid AND n.source = s.source')
        ->orderBy("n.date","DESC")
        ->setParameter('userid', $userid)->getQuery();

如何解决它:) ?试图从查询中获取结果,在 ArrayCollection 中,它可以工作(部分,不按日期排序,我认为这种方法使用了很多时间)

【问题讨论】:

你不应该按news.id分组吗? (例如->groupBy('n.id'))? 【参考方案1】:

现在回答有点晚了,但它可能对其他读者有所帮助。 我建议取消显式的 innerJoin 并让 Doctrine 处理连接。

    return $this->getEntityManager()->createQueryBuilder()
    ->select('n')
    ->from('NickCoreBundle:News', 'n')
    ->join('n.source', 's')
    ->where('s.user'= :userid )
    ->orderBy("n.date","DESC")
    ->setParameter('userid', $userid)->getQuery();  

【讨论】:

以上是关于Symfony2 KNP 分页“无法计数查询”的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 KNP PAGINATOR for php 模板

knp 分页器仅适用于数组

KNP 分页链接卡在第 1 页

Symfony2 Doctrine 错误:无法计算使用 HAVING 子句的查询。使用输出步行器进行分页

Symfony2 Knp-snappy 生成 PDF 不导入 CSS

Knp分页器不分页