3

我可能忽略了一些东西,但我不明白为什么我没有从 Doctrine2 DQL 中得到任何结果。它不会失败,但会返回空对象。Symfony2 参数设置正确,我知道正在使用适当的 SQL 查询数据库(通过在 MySQL 上记录 SQL 查询)。

代码不起作用的控制器:

public function debugAction() {
    $em = $this->getDoctrine()->getEntityManager();
    $qb = $em->createQueryBuilder();
    $account = $qb->select('a')
                   ->from('SkiviBundle:Account', 'a')
                   ->where('a.id = :id')
                   ->setParameter('id', 5)
                   ->getQuery()->getResult();
    return new \Symfony\Component\HttpFoundation\JsonResponse(array(
        'dql' => $qb->getDql(),
        'sql' => $qb->getQuery()->getSQL(),
        'params' => $qb->getQuery()->getParameters(),
        'account' => $account
    ));
}

这是我得到的 JSON 响应,显示返回的对象是空的。我什至没有取回参数。

{
   "dql":"SELECT a FROM SkiviBundle:Account a WHERE a.id = :id",
   "sql":"SELECT a0_.id AS id0, a0_.business AS business1 FROM account a0_ WHERE a0_.id = ?",
   "params":{},
   "account":[{}]
}

我知道 SQL 已针对数据库成功执行。如何让 Doctrine2 将返回对象($accounts)填充为实体对象?我的 Symfony2 应用程序是标准的(无需进一步配置即可生成,除了添加实体和控制器以及更新数据库访问参数。

4

1 回答 1

1

似乎不能在dql中使用:id,id是关键字?重命名并重试

毕竟,这是一种执行此查询的方法:

$em->getRepository('SkiviBundle:Account')->find($id);
于 2013-11-11T03:09:20.373 回答