我使用 Doctrine 2 Query Builder 对 DQL 有以下请求,效果很好:
$qb->select('post')
->from('Posts\Entity\Post','post')
->join('post.author','author')
->where('author INSTANCE OF :utype')
->setParameter('utype',$userType);
但是,考虑到这个示例反射(reflect)了大型查询的一部分,我想去掉这个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')
->where('post.author INSTANCE OF '.UserType::class);
或者像这样
$qb->select('post')
->from('Posts\Entity\Post','post')
->where('post.author INSTANCE OF :utype')
->setParameter('utype', $entityManager->getClassMetadata(UserType::class));
关于doctrine-orm - 原则 2. 查询生成器。关联实例类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31330027/