2012-03-21 23 views
7

Me he unido a la herencia de tablas (vamos a llamarlo Acción) y necesito obtener todos los registros de Acción que satisfacen la condición, pero los campos están en subclases? ¿Hay alguna manera de acceder a los campos de subclase sin escribir Native Query, pero usar DQL? (o queryBuilder)?Doctrine2 - Mapeo de herencia, consultar subclases

+0

hace el campo pertenecen a una sola clase, o para varios subclases para una consulta? –

+0

todas las subclases tienen una relación con una clase diferente, pero la propiedad siempre es la misma. – CappY

+0

No entiendo exactamente lo que intenta hacer. ¿Puedes publicar un pequeño resumen de las entidades y lo que quieres consultar? –

Respuesta

0

Si tiene una subclase, puede consultar directamente esa subclase. Las propiedades de la clase principal se heredarán automáticamente (duh). Creo que esto es lo que estás buscando (basado en cómo he implementado la herencia de la tabla de clases).

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

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

Ahora bien, según si tengo que conseguir los comerciantes activos, lo haría de la siguiente, y funciona para mí:

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

Sí, eso funciona, pero quiero -> de ('Usuario', 'u') -> y Donde ('userSubClass.isActive: bandera'), ese es el problema. – CappY

+0

La consulta de arriba le da a todos los usuarios donde el comerciante está activo. Piense en esto ... cuando quiera seleccionar usuarios donde 'subclase activa' ... eso significa que solo devolverá al usuario de tipo clase secundaria ... para seleccionar comerciantes que están activos le devuelve todas las propiedades del usuario así como del comerciante – Broncha

+0

Sí, pero tengo 5 subclases diferentes, y cada subclase tiene condiciones diferentes para verificar si está activo. Por ejemplo: – CappY