私はおそらく何かを見落としていますが、Doctrine2 DQL から結果が得られない理由を理解できません。失敗しませんが、空のオブジェクトを返します。Symfony2 パラメーターは正しく設定されており、データベースが適切な SQL でクエリされていることがわかります (MySQL で SQL クエリをログに記録することにより)。
コードが機能しないコントローラー:
public function debugAction() {
$em = $this->getDoctrine()->getEntityManager();
$qb = $em->createQueryBuilder();
$account = $qb->select('a')
->from('SkiviBundle:Account', 'a')
->where('a.id = :id')
->setParameter('id', 5)
->getQuery()->getResult();
return new \Symfony\Component\HttpFoundation\JsonResponse(array(
'dql' => $qb->getDql(),
'sql' => $qb->getQuery()->getSQL(),
'params' => $qb->getQuery()->getParameters(),
'account' => $account
));
}
返されたオブジェクトが空であることを示す JSON 応答を次に示します。パラメータを取得することすらできません。
{
"dql":"SELECT a FROM SkiviBundle:Account a WHERE a.id = :id",
"sql":"SELECT a0_.id AS id0, a0_.business AS business1 FROM account a0_ WHERE a0_.id = ?",
"params":{},
"account":[{}]
}
データベースに対して SQL が正常に実行されることはわかっています。Doctrine2 に戻りオブジェクト ($accounts) をエンティティ オブジェクトとして設定させるにはどうすればよいですか? 私の Symfony2 アプリケーションは標準です (エンティティとコントローラーを追加し、データベース アクセス用のパラメーターを更新する以外は、追加の構成なしで生成されます。