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

0

$stmt = $em->getConnection()->prepare($sql); の後に次のコードを追加します。

$stmt->execute();

これが問題かもしれないと思います。

于 2013-11-12T14:59:19.283 に答える