Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Doctrine orm 如何使用Doctrine 2 DQL ON覆盖默认连接条件_Doctrine Orm_Doctrine_Doctrine Orm Postgres - Fatal编程技术网

Doctrine orm 如何使用Doctrine 2 DQL ON覆盖默认连接条件

Doctrine orm 如何使用Doctrine 2 DQL ON覆盖默认连接条件,doctrine-orm,doctrine,doctrine-orm-postgres,Doctrine Orm,Doctrine,Doctrine Orm Postgres,首先,它不是一个复制品。我确实得到了预期的字符串结尾,得到了“ON”,但使用和不能解决我的问题 那里的问题与我的相似,但不同。我不需要将一个条件添加到我的加入,我需要用另一个条件替换默认条件 比如说,我们有两个催眠表:album和artist,其中artist\u idFK从album指向artist。就我而言,我不想加入艺术家的专辑。我想列出艺术家加入不相关的专辑使用一些任意条件。因此,每位艺术家都将拥有一套完全相同的小专辑。相信我,在我的情况下,它是有意义的-我不想完全描述它,因为它太复杂,

首先,它不是一个复制品。我确实得到了
预期的字符串结尾,得到了“ON”
,但使用
不能解决我的问题

那里的问题与我的相似,但不同。我不需要将一个条件添加到我的
加入
,我需要用另一个条件替换默认条件

比如说,我们有两个催眠表:
album
artist
,其中
artist\u id
FK从
album
指向
artist
。就我而言,我不想加入艺术家的专辑。我想列出艺术家加入不相关的专辑使用一些任意条件。因此,每位艺术家都将拥有一套完全相同的小专辑。相信我,在我的情况下,它是有意义的-我不想完全描述它,因为它太复杂,超出了我的问题范围

SELECT * FROM artist
  LEFT JOIN album ON album.some_unrelated_property = 'foo'
上面的示例是原始SQL(我使用的是PostgreSQL),在这种形式下工作得非常好

在我的代码中,我使用的是查询生成器(很难避免,因为我的查询要复杂得多,并且是由一系列函数逐步构建的)。导致错误的行如下所示:

$qb->leftJoin('artist.albums', 'aa', Join::ON, 'aa.someUnrelatedProperty = "foo"');
在教义中,我得到了可怕的
预期的字符串结尾,得到了“ON”
。当我将
一起使用而不是在
上使用
时,它会起作用,但正如预期的那样,它会通过
artist\u id
附加标准连接条件,这是我不想要的

更让我困惑的是,在这篇文章中:这解释了DQL中
ON
WITH
之间的区别,有人使用了一个与我相同的示例,作为DQL中
ON
的正确用法:

案例二

DQL

从相册a向左加入a。在t上跟踪t。状态=1

将在SQL中进行翻译

从相册a左连接t上的曲目t.status=1

我错过了什么?使用DQL有可能实现我想要的吗?如果没有,那么在DQL中存在
ON
的原因是什么,而
WITH
在更标准的情况下工作