Doctrineを使用して、複数のテーブルから収集したデータに基づいて、単一のテーブルのレコードを削除しようとしています。
「会社_グループ」は、「会社」を「グループ」にリンクする関連付けテーブルです。特定の会社にリンクされたこのテーブルのすべてのレコードを削除したいのですが、'public' グループにリンクされた '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'
Doctrineで同等のものは何ですか? 私は今、1時間ほど苦労して実験しています。
現時点で私はこれを持っています:
$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 モデルは、'company_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」があいまいになります)。
役立つ追加情報があれば教えてください。