我正在做一个新闻门户网站。我正在使用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中,它的工作(部分,不按日期排序,我认为这种方法使用了很多时间)
现在回答有点晚了,但对其他读者可能有帮助。
我建议去掉显式的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();