我可能忽略了一些东西,但我不明白为什么我没有从 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 应用程序是标准的(无需进一步配置即可生成,除了添加实体和控制器以及更新数据库访问参数。