当前位置: 首页 > 面试题库 >

Symfony 2:使用理论查询生成器在不相关的表上进行INNER JOIN

贺浩壤
2023-03-14
问题内容

我正在尝试使用学说查询构建器构建一个查询,该构建器将这样一个不相关的表加入其中:

$query = $this->createQueryBuilder('gpr')
        ->select('gpr, p')
        ->innerJoin('TPost', 'p')
        ->where('gpr.contentId = p.contentId')

但这是行不通的。我仍然收到错误消息:

错误:标识变量TPost用于联接路径表达式中,但之前未定义。

我搜索了此错误消息,每个人都回答使用表别名+属性,例如p.someAttribute。但是我要联接的表与我从中选择的表无关。

作为普通的mysql查询,我会这样写:

SELECT * FROM t_group_publication_rel gpr 
INNER JOIN t_post p 
WHERE gpr.content_id = p.content_id

任何想法我在做什么错?


问题答案:

今天,我正在从事类似的工作,并记得我打开了这个问题。我不知道它从哪个版本开始起作用,但是现在您可以轻松地将子类加入继承映射中。因此,这样的查询可以正常工作:

$query = $this->createQueryBuilder('c')
        ->select('c')
        ->leftJoin('MyBundleName:ChildOne', 'co', 'WITH', 'co.id = c.id')
        ->leftJoin('MyBundleName:ChildTwo', 'ct', 'WITH', 'ct.id = c.id')
        ->orderBy('c.createdAt', 'DESC')
        ->where('co.group = :group OR ct.group = :group')
        ->setParameter('group', $group)
        ->setMaxResults(20);

我在使用继承映射的父类中启动查询。在我以前的文章中,这是一个不同的起点,但如果我没记错的话,这是一个相同的问题。

因为当我开始这个问题时这是一个大问题,所以我认为对于其他不了解它的人来说也可能很有趣。



 类似资料:
  • 问题内容: 在Symfony2学说查询生成器中如何实现SQL?假设我有这个查询: 我有这个DQL: 现在如何添加IFNULL部分? 问题答案: 好的,做了一些研究,发现没有这样的实现。 谷歌搜索更多,并得到这种缺失的功能可以作为自己的功能添加到Doctrine。 我在GitHub上找到了这个扩展名,我认为这会起作用。但是想知道与教义版本是否会有任何问题或冲突…

  • 我有两个模型/表:User和POST。一个用户可以有多个帖子,每个帖子属于一个用户。 我希望能够返回以下结果 因为用户3最近的帖子是在最早之前创建的,然后是用户1,然后是用户2。 到目前为止,我已经尝试过了,但它为用户返回了重复的结果:

  • 问题内容: 我知道如何使用派生表,但是我仍然可以真正看到使用它们的任何真正优势。 例如,在下面的文章http://techahead.wordpress.com/2007/10/01/sql-derived- tables/中 ,作者试图展示使用派生表的查询优于没有示例的查询的优点,我们要生成一个报告,以显示每个客户在1996年下的订单总数,我们希望该结果集包括所有客户,包括当年未下订单的客户和从

  • 我使用laravel雄辩到CRUD数据。我的问题是,我不知道如何使用laravel雄辩的ORM进行UNION查询。你能帮我解决我的问题吗 这是我想要在laravel雄辩或查询生成器中实现的示例查询

  • 我有以下工作查询 它在整个路径=/content/dam上运行,所以它遍历所有节点大约20分钟,并给出结果。 当以编程方式使用查询生成器api时,我如何才能批量使用它,比如-遍历1000个节点并按代码执行某些操作,然后继续查询并遍历下1000个节点等等?这可能吗? 谢谢。

  • 这是通过mysql成功执行的查询: 这是一个查询laravel,我使用查询生成器: 我得到了这个错误: "SQLSTATE[42000]:语法错误或访问冲突:1055'lookbubbledrink.v.id'不在GROUP BY(SQL:选择Count()作为总数,.,.代码>作为左加入作为上的。##################################################