检查外表中是否存在id两次

Rei*_*Rei 5 php doctrine dql symfony

经过一段时间的努力,我想我会试着在这里要求改变.
我试图检查一个人身份是否存在于两个表中,对于一个表,它就像一个魅力,但如果我尝试检查另一个表,我会收到以下错误:

[语义错误]第0行,第268行附近'owner FROM\...\Entity\Resource':
错误:无效的PathExpression.必须是StateFieldPathExpression.

诀窍是我只能使用一个DQL查询,以下是我提出的(...不在实际查询中):

SELECT contact_person
FROM \\...\Entity\Person contact_person
WHERE NOT EXISTS (SELECT b.personId FROM \\...\Entity\Booking b WHERE b.personId = contact_person.id)
AND NOT EXISTS (SELECT r.owner FROM \\...\Entity\Resource r WHERE r.owner = contact_person.id)
Run Code Online (Sandbox Code Playgroud)

Rei*_*Rei 0

我最终使用子查询解决了它。连接可能会快得多,但我失去了它们的踪迹。(他们在 DQL 方面让我非常头疼)

无论如何,我解决它的方法是这样的:

SELECT contact_person
FROM ...
WHERE (SELECT COUNT(b.personId) FROM \\...\Entity\Booking b WHERE b.personId=contact_person.id)=0
AND (SELECT COUNT...)=0
Run Code Online (Sandbox Code Playgroud)

请注意,我的代码不需要实时运行,因此我更关心易用性而不是性能。(我喜欢子查询,因为它们清楚地分隔了不同的规则,我想其他人可能更喜欢连接,这是有充分理由的,除了性能之外)。