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 - 加入非相关表的主要内容,如果未能解决你的问题,请参考以下文章

Doctrine2 - 继承映射,查询子类

Doctrine2,映射“继承”表

从与 Doctrine2 的多对多关系中获取数据

Doctrine2:任意连接和单表继承

Doctrine2 ORM 访问多对多连接表

Symfony2 Doctrine2 获取所有表