Php symfony2查询即使登录正常也不会返回结果

Php symfony2查询即使登录正常也不会返回结果,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我在一个新的Symfony2项目中遇到了一个以前从未见过的问题。我已经使用普通表单登录为新应用程序设置了身份验证,这很好。 问题是当我试图在控制器的操作中使用doctrine DQL或原始SQL查询数据库时。为了测试,我尝试查询身份验证使用的同一个用户表。我做了一个非常简单的查询,应该有结果,但是当执行查询时,不会返回任何结果 以下是我执行查询的方式: $sql = "SELECT * FROM sys_user"; $em = $this->getDoctrine()->getMa

我在一个新的Symfony2项目中遇到了一个以前从未见过的问题。我已经使用普通表单登录为新应用程序设置了身份验证,这很好。
问题是当我试图在控制器的操作中使用doctrine 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, 博士后9.2, IIS 7.5

编辑:

下面是我使用DQL的查询。对于可维护性,我更愿意使用DQL

$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
    'SELECT u
     FROM MyCoreBundle:SysUser u'
);          
$user = $query->getResult();
这将为表中的每一行返回一个空结果。所以条令知道有多少行,但不会返回对象。这里有我遗漏的东西吗?这是一个直接来自symfony文档的修改片段,所以我不知道会出什么问题

这也有同样的作用:

$user = $this->getDoctrine()
->getRepository('MyCoreBundle:SysUser')
->findAll();

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


我想这可能就是问题所在。

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

$response = new JsonResponse($user);
这将使用json_encode作为参数,它期望和关联数组。需要做的是:

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

这就解决了问题。

天哪,我现在觉得自己很笨。。。这就是原始sql查询的问题所在。但是关于DQL查询的问题,请参见我的编辑。谢谢是的,问题肯定是$user变量,它是一个对象的集合,应该是一个数组,下面的答案是正确的,使用$user=$query->getArrayResult();解决你的问题。
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
    'SELECT u
     FROM MyCoreBundle:SysUser u'
);          
$user = $query->getArrayResult();