存在类似问题,但我没有提到静默连接表问题。
由于此连接表,我有一个带连接的简单SQL查询但无法将其转换为DQL。有两个实体,商店和客户,由ManyToMany协会链接。
Doctrine2默默地创建了一个连接表:shop_client
。
现在,如果我想所有不属于某个商店的客户,我可以这样做:
SELECT c.name FROM `client` AS c
JOIN `shop_client` AS sc
ON sc.client_id = c.id
AND sc.shop_id != :shop_id
这很简单,非常简单,但我无法想出DQL版本。
我尝试使用“EXISTS”,“NOT IN”,“SIZE”,但最终无法使用正常的DQL查询。
修改:我的商店实体有clients
字段,但客户实体没有shops
字段。
答案 0 :(得分:1)
SELECT
c
FROM
Client c
WHERE
c.id IN (
SELECT
c2.id
FROM
Shop s2
JOIN
s2.clients c2
WHERE
s2.id != :shopId
)
另外,考虑在没有实体定义的情况下构建此类查询就像在黑暗中拍摄一样。下次将问题发布给他们。