Php 如何删除单个DQL中的所有连接实体

Php 如何删除单个DQL中的所有连接实体,php,doctrine-orm,dql,Php,Doctrine Orm,Dql,我有这样一个dql声明: 删除i、p、d、d2、s 摘自:图片一 加入i.p 加入i.d 加入p.doc d2 左连接p.s 其中d.taglike:tag 如果我将DELETE替换为SELECT,查询将按预期工作。但是,当我使用DELETE时,它会给我一个错误 [语义错误]第0行,第7列靠近“i,p,d,d2”:错误:未定义类“i” DQL中的删除查询不支持联接,因为某些受支持的RDBMSE不支持联接 不幸的是,您必须首先选择要删除的元素的ID,然后执行delete FROM foo WHE

我有这样一个dql声明:

删除i、p、d、d2、s
摘自:图片一
加入i.p
加入i.d
加入p.doc d2
左连接p.s
其中d.taglike:tag
如果我将
DELETE
替换为
SELECT
,查询将按预期工作。但是,当我使用
DELETE
时,它会给我一个错误

[语义错误]第0行,第7列靠近“i,p,d,d2”:错误:未定义类“i”


DQL中的删除查询不支持联接,因为某些受支持的RDBMSE不支持联接

不幸的是,您必须首先选择要删除的元素的ID,然后执行
delete FROM foo WHERE bar IN(?1)
,并将ID作为参数传递给数组

从多个表中删除时,请记住使用显式事务

另一种选择是本机查询,因为底层RDBMS支持删除查询中的联接