Doctrine orm 学说2。查询生成器。类型的关联实例

Doctrine orm 学说2。查询生成器。类型的关联实例,doctrine-orm,dql,instanceof,Doctrine Orm,Dql,Instanceof,我对DQL有以下要求,使用Doctrine 2查询生成器,效果很好: $qb->select('post') ->from('Posts\Entity\Post','post') ->join('post.author','author') ->where('author INSTANCE OF :utype') ->setParameter('utype',$userType); 但是,考虑到这个示例反映了大型查询的一部分,我想去

我对DQL有以下要求,使用Doctrine 2查询生成器,效果很好:

$qb->select('post')
    ->from('Posts\Entity\Post','post')
    ->join('post.author','author')
    ->where('author INSTANCE OF :utype')
    ->setParameter('utype',$userType);
但是,考虑到这个示例反映了大型查询的一部分,我想去掉这个
join
。我试过这个:

$qb->select('post')
    ->from('Posts\Entity\Post','post')        
    ->where('post.author INSTANCE OF :utype')
    ->setParameter('utype',$userType);
但它不起作用

如何避免使用
join
?或者也许有其他方法来优化这样的查询


谢谢

我知道这是一个老问题,但仍然找不到答案。
无法通过参数将实例名称设置为字符串

可以这样写:

$qb->select('post')
->from('Posts\Entity\Post','Post')
->其中(“.UserType::class”的post.author实例);
还是像这样

$qb->select('post')
->from('Posts\Entity\Post','Post')
->其中('post.author:utype'的实例)
->setParameter('utype',$entityManager->getClassMetadata(UserType::class));

@请参阅:

发生了什么错误?预期的条令\ORM\Query\Lexer::T_实例,在post.authorposts和author附近有“.”是两个不同的表。帖子中的连接字段将只是一个ID。因此,您必须进行连接。也许有什么方法可以访问鉴别器列?但是它也涉及到join..无论如何,我已经发现了性能问题的原因。这与连接无关,它是由查询的另一部分中的连接语句中的条件引起的:
$qb->join($userType,'u','WITH','post.destination_member_id=u.id或post.author_id=u.id')