gpt4 book ai didi

php - 如何正确编写 Doctrine 2 DQL 查询?

转载 作者:搜寻专家 更新时间:2023-10-31 20:46:46 25 4
gpt4 key购买 nike

我现在已经升级到 Doctrine 2.2.2。我已经成功地将我的数据库连接到我的应用程序,并且能够生成代理和存储库。我对那一代没有问题。我只是对使用 doctrine 2.2.2 的 DQL 感到困惑。情况是这样的:我目前有一个负责用户注册、身份验证等的存储库类。我已经设法在其上执行 DQL,但我只是觉得这些东西(在我的存储库类中)很奇怪。

$query = $em->createQuery("SELECT u FROM MyProject\\Entity\\AdminUsers u");

我也试过:

$query = $em->createQuery("SELECT u FROM AdminUsers u");

最后一个没有用,但第一个工作正常但看起来很奇怪。它真的是在 doctrine 2 中执行 DQL 的正确方法吗?还是我错过了一些重要的东西。

注意:关于这个存储库类的上述声明是:

namespace MyProject\Repository;

use Doctrine\ORM\EntityRepository,
MyProject\Entity\AdminUsers;

最佳答案

这几乎是正确的方法。如果要使用单引号 ',则可以只使用单个反斜杠 \ 而不是双反斜杠 \\

Doctrine 无法找出(或者这样做会非常昂贵)您通过 use 语句导入了哪些类。

但是您可以使用通过以下方式从实体管理器检索的类型化存储库:

$repo  = $em->getRepository('MyDomain\Model\User');
$res = $repo->findSomeone();

findSomeone() 函数中,您可以这样做:

$qb = $this->createQueryBuilder('u');
$dql = $qb->where('u.id = 1')->getDQL();

return $this->_em->createQuery($dql)->getSingleResult();

意思是,存储库已经在您的实体上键入并且知道从哪个类中选择。

一些文档:

关于php - 如何正确编写 Doctrine 2 DQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12319871/

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