2012-03-21 13 views
7

Ho aderito all'ereditarietà della tabella (chiamiamolo Azione) e ho bisogno di ottenere tutti i record di Azione che soddisfano la condizione, ma i campi sono in sottoclassi? C'è modo di accedere ai campi della sottoclasse senza scrivere Native Query, ma usare DQL? (o queryBuilder)?Doctrine2 - Mapping dell'ereditarietà, interrogazione delle sottoclassi

+0

fa il campi appartengono ad una sola classe, o per diversi sottoclassi per una query? –

+0

tutte le sottoclassi hanno una relazione con una classe diversa, ma la proprietà è sempre uguale. – CappY

+0

Non capisco cosa stai cercando di fare esattamente. Puoi pubblicare un piccolo esemplare delle entità e ciò che vuoi interrogare? –

risposta

0

Se si dispone di una sottoclasse, è possibile interrogare direttamente per tale sottoclasse. Le proprietà della classe genitore saranno automaticamente ereditate (duh). Credo che questo sia quello che stai cercando (basato su come ho implementato l'ereditarietà delle tabelle di classe).

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

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

Ora secondo voi se devo ottenere i commercianti attivi, vorrei fare le seguenti, e funziona per me:

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

Sì, funziona, ma voglio -> da ('Utente', 'u') -> andWhere ('userSubClass.isActive: flag'), questo è il problema. – CappY

+0

La query precedente fornisce a tutti gli utenti in cui il commerciante è attivo .. Pensa a questo ... quando vuoi selezionare gli utenti dove 'sottoclasse attivo '.. significa che restituirà solo l'utente di tipo sottoclasse .. quindi selezionando i commercianti che sono attivi restituisce tutte le proprietà dell'utente e del commerciante – Broncha

+0

Sì, ma ho 5 diverse sottoclassi e ogni sottoclasse ha condizioni diverse per verificare se è attiva. Ad esempio: – CappY

Problemi correlati