我有两个实体,Carros
和Msg
,我希望Carros
有Msg
条消息
$query = $entityManager->createQuery("
SELECT u
FROM Auto\Entity\Carros u
JOIN Auto\Entity\Msg m WITH m.idautoad=u.idcarros
WHERE u.identidade='".$emailidentidade."'
ORDER BY u.datadoanuncio DESC
");
我正在使用分页器:
// Create the paginator itself
$paginator = new Paginator(
new DoctrinePaginator(new ORMPaginator($query))
);
我得到以下错误我有zend 2.3.9和doctrine 2.4
Arquivo: C:\网站\汽车\厂商\ zendframework \ zendframework \库\ Zend的\分页程序\ Paginator.php:637
Mensagem:生成迭代器时出错
C:\网站\汽车\厂商\教义\ ORM \ lib中\学说\ ORM \工具\分页\ WhereInWalker.php:85
Mensagem:
无法统计选择两个FROM组件的查询,无法区分
当我尝试这样做时会产生错误:
foreach ($paginator as $carro)
{}
获得如下结果时错误消失:
$fi = $query->getResult();
然后
$paginator = new \Zend\Paginator\Paginator(new
\Zend\Paginator\Adapter\ArrayAdapter($fi)
);
答案 0 :(得分:0)
如果您有ManyToOne关系,您可以这样做(请务必先查看此链接,以使您的地图正确无误:Bidirectionnal ManyToOne relation
public function getInvoices($idProformaGroup, $paginate = false)
{
$query = $this->getEntityManager()->createQueryBuilder();
$query->select('po', 'i')
->from('Invoice\Entity\Proforma', 'po')
->innerJoin('po.idInvoice', 'i')
->andWhere("po.idProformaGroup = :idProformaGroup")
->orderBy('po.idProforma', 'ASC')
->setParameter('idProformaGroup', $idProformaGroup);
if ($paginate) {
$doctrineAdapter = new DoctrineAdapter(new ORMPaginator($query, true));
return new Paginator($doctrineAdapter);
} else {
return $query->getQuery()->getResult();
}
}
如您所见,我的联接使用外键po.idInvoice来连接两个表。因此,我的Paginator没有告诉我你的错误。
编辑:有了参数,我可以决定是否分页。如果您不需要,请不要使用它。
编辑2:从链接到另一个问题加入Doctrine : Pagination with left Joins之前未来的答案与我试图向您解释的一致。
答案 1 :(得分:-1)
我不再使用了 新的DoctrinePaginator(新的ORMPaginator($ query))
现在我正在使用\ Zend \ Paginator \ Paginator及其工作 $ fi = $ query-> getResult();
$ paginator = new \ Zend \ Paginator \ Paginator(new \ Zend的\分页程序\适配器\ ArrayAdapter($ FI) );