0

我遇到了一个新的 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();
4

2 回答 2

1

问题在于响应。这是返回响应的方式:

$response = new JsonResponse($user);

这使用期望和关联数组作为参数的 json_encode。需要做的是这样的:

$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
    'SELECT u
     FROM MyCoreBundle:SysUser u'
);          
$user = $query->getArrayResult();

这解决了问题。

于 2013-11-14T04:05:41.380 回答
0

在 $stmt = $em->getConnection()->prepare($sql); 之后添加以下代码

$stmt->execute();

我认为这可能是问题所在。

于 2013-11-12T14:59:19.283 回答