Inheritance Doctrine2-继承映射,查询子类

Inheritance Doctrine2-继承映射,查询子类,inheritance,orm,doctrine,mapping,dql,Inheritance,Orm,Doctrine,Mapping,Dql,我已经加入了表继承(让我们称之为Action),我需要获取满足条件的所有操作记录,但是字段在子类中?有没有办法不用编写本机查询而使用DQL访问子类字段?(或queryBuilder)?如果您有一个子类,您可以直接查询该子类。父类的属性将自动继承(duh)。我相信这就是您想要的(基于我如何实现类表继承) 现在,根据您的说法,如果我必须获得活跃的商户,我将执行以下操作,这对我很有效: $qb->select('m.bizname') ->from('Merchant','m')

我已经加入了表继承(让我们称之为Action),我需要获取满足条件的所有操作记录,但是字段在子类中?有没有办法不用编写本机查询而使用DQL访问子类字段?(或queryBuilder)?

如果您有一个子类,您可以直接查询该子类。父类的属性将自动继承(duh)。我相信这就是您想要的(基于我如何实现类表继承)

现在,根据您的说法,如果我必须获得活跃的商户,我将执行以下操作,这对我很有效:

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

字段是只属于一个类,还是属于一个查询的多个子类?所有子类都与不同的类有关系,但属性总是相同的。我不明白您到底想做什么。你们可以发布一个小的实体示例和你们想要查询的内容吗?我有10个实体扩展了连接的继承映射实体,每个子类实体与不同的对象有关系,哪个对象有不同的条件显示。例如,我有CommentAction扩展了与Comment有关系的操作,当isApproved=true时有条件显示,但另一个类RateAction扩展了与评级有关系的操作,其中有一个属性要显示isActive,我想显示所有满足子类关系条件的操作。或者另一种情况,我有10个扩展类对象的实体,我想按datePublished排序,但其中只有2个具有该属性,我可以创建这2个类的对象实例,但是,当我按datePublished订购时,没有这样的属性,因为它位于子类中。是的,这是可行的,但我想要->from('User','u')->和where('userSubClass.isActive:flag'),这就是问题所在。上面的查询确实给出了商户处于活动状态的所有用户。。想想这个。。当您想选择
子类活动的用户时。。这意味着它将只返回sub-class类型的用户。。因此,选择活跃的商家会返回用户和商家的所有属性,但我有5个不同的子类,每个子类都有不同的条件来验证它是否活跃。例如:例如:评论、评级、收藏等所有扩展操作。操作具有dateTime列(我使用orderBy)。我想获取以下位置的所有操作(CASE WHEN Action INSTANCE OF Comment THEN Comment.isApproved WHEN Action INSTANCE OF Rating THEN Rating.isActive WHEN Action INSTANCE OF Favorite THEN Favorite.isRemoved END)=1,或其他内容。我现在要做的是用特定的WHERE Stmt查询每个子类,并在应用层中使用array_merge()查询它们。@CappY当技术不支持您想要做的事情时,您需要围绕可用的技术考虑您的应用程序。我还可以确认
CASE
语句与querybuilder一起工作。
$qb->select('m.bizname')
   ->from('Merchant','m')
   ->where('m.isActive = :flag')
   ->setParameter('flag',TRUE);