Doctrine orm 学说2。查询生成器。类型的关联实例
我对DQL有以下要求,使用Doctrine 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); 但是,考虑到这个示例反映了大型查询的一部分,我想去
$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')代码>