2012-03-21 14 views
7

私はテーブルの継承に参加しました(アクションと呼ぶことができます)、条件を満たすアクションのすべてのレコードを取得する必要がありますが、フィールドはサブクラスにありますか?ネイティブクエリを書くことなくサブクラスのフィールドにアクセスする方法はありますか?DQLを使用しますか? (またはqueryBuilder)?Doctrine2 - 継承マッピング、サブクラスのクエリ

+0

は、フィールドが唯一のクラスに属する、またはいくつかの場合とクエリのサブクラス? –

+0

すべてのサブクラスは異なるクラスとの関係を持ちますが、プロパティは常に同じです。 – CappY

+0

あなたが何を正確にしようとしているのか分かりません。あなたはエンティティの小さなexapmleとあなたが照会したいものを投稿できますか? –

答えて

0

サブクラスをお持ちの場合は、そのサブクラスを直接クエリできます。親クラスのプロパティは自動的に継承されます(duh)。私はこれがあなたが探しているものだと信じています(クラステーブルの継承をどのように実装したかに基づいています)。

class User{ 
    private $id; 
    private $username; 
} 

class Merchant extends User{ 
    private $bizname; 
    private $isActive; 
} 

私はアクティブな商人を取得する必要があれば今、あなたによると、私は次のだろう、それは私の作品:

$qb->select('m.bizname') 
    ->from('Merchant','m') 
    ->where('m.isActive = :flag') 
    ->setParameter('flag',TRUE); 
+1

はい、それはうまくいっていますが、 - >( 'User'、 'u') - > andWhere( 'userSubClass.isActive:flag')から、問題があります。 – CappY

+0

上記のクエリは、商人が活動しているすべてのユーザーに提供しています。これを考えると、 'subclass active'というユーザーを選択すると、サブクラスタイプのユーザーのみが返されます。アクティブであるあなたはユーザーと商人のすべてのプロパティを返します – Broncha

+0

はい、私は5つの異なるサブクラスを持ち、すべてのサブクラスはそれがアクティブかどうかを確認するために異なる条件を持っています。例: – CappY

関連する問題