使用Doctrine,我试图根据从多个表中收集的数据删除单个表中的记录。
“companies_groups”是将“公司”链接到“组”的关联表。我想删除此表中链接到特定公司的所有记录,但只有链接到“公共”组的“companies_groups”记录才会被删除。
如果我用纯 SQL 编写它,它看起来像这样:
DELETE companies_groups
FROM companies_groups, groups
WHERE companies_groups.companyID = 7
AND companies_groups.groupID = groups.id
AND groups.groupType = 'public'
教义中的等价物是什么?我一直在挣扎和尝试一个小时左右。
目前我有这个:
$query = Doctrine_Query::create()
->delete('Company_group cg')
->from('Company_group cg, Group g')
->where( "cg.companyID = ? AND g.groupType = 'public' AND g.id = cg.groupID ", array( $companyID ) );
(我的 Doctrine 模型是“companies_groups”表的“Company_group”和“groups”表的“Group”)
这会产生这个 SQL:
DELETE FROM companies_groups, groups WHERE (companyid = ? AND grouptype = 'public' AND id = groupid)
您可以看到生成的 SQL 在 DELETE 和 FROM 之间缺少“companies_groups”,并且限定符被删除(意味着“id”将不明确)。
让我知道我是否可以提供任何有用的其他信息。