Doctrine2 - 加入非相关表
Posted
技术标签:
【中文标题】Doctrine2 - 加入非相关表【英文标题】:Doctrine2 - join on non related table 【发布时间】:2015-08-20 14:36:50 【问题描述】:我有一些不相关的表,我尝试在查询中加入表:
$builder = $this->em()->createQueryBuilder();
$builder->select('main')
->from($this->getEntityName(), 'main')
->leftJoin('\Bundle\Path\To\Article', 'a', 'WITH', 'a.id = main.articleID');
$query = $builder->getQuery();
$query->setHydrationMode(\Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY);
$paginator = new \Doctrine\ORM\Tools\Pagination\Paginator($query);
return [
'success' => true,
'total' => $paginator->count(),
'data' => $paginator->getIterator()->getArrayCopy()
];
我收到这条消息:
无法统计选择两个FROM组件的查询,无法区分
有人可以帮我解决这个问题吗?
【问题讨论】:
你使用的是什么版本的 Doctrine DBAL/ORM? 为什么表格不应该相互关联?那么你可以使用 Native SQL 来使用 UNION 选择:***.com/questions/19112971/… 【参考方案1】:有两种选择。
选项 1
SELECT t1.name, t2.date FROM table1 t1, table2 t2;
显然这需要修改以满足您的 SQL 语句/代码结构,但我希望您明白这一点。
选项 2
SELECT t1.name, t2.date FROM table1 t1 CROSS JOIN table2 t2;
希望这会有所帮助:)。但是,将来我可以建议先用谷歌搜索,因为这是一个流行的问题。
【讨论】:
感谢您的评论,但如何将选项 1 设置为查询构建器?这甚至可能吗?以上是关于Doctrine2 - 加入非相关表的主要内容,如果未能解决你的问题,请参考以下文章