En utilisant Doctrine, j'essaie de supprimer des enregistrements dans une seule table en fonction des données recueillies à partir de plusieurs tables. 'Companies_groups' est une table d'association reliant les 'sociétés' aux 'groupes'. Je souhaite supprimer tous les enregistrements de cette table liés à une société spécifique, avec la restriction que seuls les enregistrements 'companies_groups' liés à un groupe 'public' seront supprimés.Quelle est la syntaxe pour une suppression multi-tables sur une base de données MySQL en utilisant Doctrine?
Si je devais écrire ce dans SQL pur, il ressemblerait à quelque chose comme ceci:
DELETE companies_groups
FROM companies_groups, groups
WHERE companies_groups.companyID = 7
AND companies_groups.groupID = groups.id
AND groups.groupType = 'public'
Quel est l'équivalent dans la doctrine? J'ai lutté et expérimenté pendant une heure maintenant.
Au moment où j'ai ceci:
$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));
(Mes modèles Doctrine sont 'Company_group' pour la table 'companies_groups de 'groupe' pour la table 'groupes')
qui produit cette SQL:
DELETE FROM companies_groups, groups WHERE (companyid = ? AND grouptype = 'public' AND id = groupid)
Vous pouvez voir que le SQL généré est manquant « companies_groups » entre SUPPRIMER et FROM, et que les qualifications sont sautées (qui signifie « id » sera ambigu). Faites-moi savoir s'il y a des informations supplémentaires que je pourrais vous fournir.