新しい 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();