マルチテーブルの構文は教義を使用してMySQLデータベースに削除とは何ですか?

StackOverflow https://stackoverflow.com/questions/2247905

質問

教義を使用して、私は単一のテーブル内のレコードを削除しようとしています複数のテーブルから収集したデータに基づいています。

「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のモデルは「Company_groupは」「グループ」テーブルは「companies_groups」テーブルと「グループ」のためのものです)

このSQLを生成する:

DELETE FROM companies_groups, groups WHERE (companyid = ? AND grouptype = 'public' AND id = groupid)

あなたは、生成されたSQLのDELETE FROMとの間の「companies_groups」を欠落している、と(「ID」を意味することは曖昧になります)修飾子がドロップされることをされていることを見ることができます。

私はそれが参考になる提供することができます任意の追加情報がある場合は、私に教えてくださいます。

役に立ちましたか?

解決

それを解決しました。構築しようとするのではなく自分自身が、私はサブクエリを使用して特定の方法でSQLを構築するために教義を強制しようとしませんでした加入ます。

これまでこのような何かを行う必要がある他の誰のために、ここでの作業を終わったものです。

$query = Doctrine_Query::create()
  ->delete('Company_group')
  ->where( "companyID = ?", array( $companyID ) )
  ->addWhere( "groupID IN (SELECT g.id FROM Group g WHERE g.groupType = 'public')" );

乾杯ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top