我遇到了一个新的 Symfony2 项目以前从未见过的问题。我已经使用普通表单登录为新应用程序设置了身份验证,并且效果很好。
问题是当我尝试在控制器的操作中使用学说 DQL 或原始 SQL 查询数据库时。只是为了测试,我试图查询身份验证使用的同一个用户表。我做了一个非常简单的查询,应该有结果,但是执行查询时,没有返回任何结果。
这就是我进行查询的方式:
$sql = "SELECT * FROM sys_user";
$em = $this->getDoctrine()->getManager();
$stmt = $em->getConnection()->prepare($sql);
$user = $stmt->fetchAll();
$return = array("success"=>true,"data"=>$user);
$response = new JsonResponse($return );
return $response;
我已经直接在我的数据库上执行了这个查询,它肯定有数据,所以我不知道为什么这不起作用。在我看来,如果身份验证机制可以从数据库中提取数据,那么我无法从同一个表中获取数据是没有意义的。
没有错误,只是一个空的结果。
我不知道从我的配置文件中发布是否会有所帮助,因为在我看来一切都设置正确,只是查询没有返回数据。
有没有人经历过这个?有什么想法我能做什么?
我正在使用:Symfony 2.3.6、PHP 5.3.27、Postgres 9.2、IIS 7.5
编辑:
这是我使用 DQL 的查询。为了可维护性,我更喜欢使用 DQL。
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT u
FROM MyCoreBundle:SysUser u'
);
$user = $query->getResult();
这将为表中的每一行返回一个空结果。所以学说知道有多少行,但不会返回对象。我在这里缺少什么吗?这是直接来自 symfony docs Here的修改片段,所以我不知道可能出了什么问题。
这也做同样的事情:
$user = $this->getDoctrine()
->getRepository('MyCoreBundle:SysUser')
->findAll();