gpt4 book ai didi

doctrine-orm - 原则 2. 查询生成器。关联实例类型

转载 作者:行者123 更新时间:2023-12-02 04:19:51 25 4
gpt4 key购买 nike

我使用 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));

@参见:https://github.com/doctrine/orm/issues/6483

关于doctrine-orm - 原则 2. 查询生成器。关联实例类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31330027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com