2012-03-21 103 views
7

我已经加入了表继承(我们称之为Action),并且我需要获取满足条件的Action的所有记录,但是这些字段在子类中?有没有办法访问子类字段,而无需编写本地查询,但使用DQL? (或queryBuilder)?Doctrine2 - 继承映射,查询子类

+0

是否领域只属于一个类或几查询的子类? – 2012-03-21 18:44:26

+0

所有子类都与不同的类有关系,但属性始终相同。 – CappY 2012-03-21 18:45:16

+0

我不明白你想要做什么。你可以发布一个实体的小实例以及你想查询的内容吗? – 2012-03-21 18:48:00

回答

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

是的,这是可行的,但我想 - >从('用户','U') - >和Where('userSubClass.isActive:标志'),这就是问题所在。 – CappY 2012-04-10 13:45:03

+0

上面的查询确实给出了商家处于活动状态的所有用户..想想这个..当你想选择用户在哪里有子类活动..这意味着它只会返回类型子类的用户..所以选择商家这是积极的返回您的所有属性的用户以及商家 – Broncha 2012-04-10 13:58:13

+0

是的,但我有5个不同的子类,并且每个子类有不同的条件来验证它是否处于活动状态。比如: – CappY 2012-04-11 21:02:43