Symfony2 KNP分页"无法计算查询"

时间:2014-08-13 15:14:01

标签: php mysql symfony pagination knppaginator

所以,我正在开设一个新闻门户网站。我正在使用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中,它可以工作(部分地,不按日期排序,我认为这种方法使用了很多时间)

1 个答案:

答案 0 :(得分:0)

回答有点迟,但对其他读者可能会有所帮助 我建议不要使用显式的 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();