如何在symfony2中使用DQL获得单个结果

时间:2012-08-09 06:43:34

标签: php symfony doctrine

我想获取最后一个用户个人资料。但我无法在DQL中这样做。 我有这个代码

$em = $this->getEntityManager();

$dql = "SELECT p  FROM AcmeBundle:UserProfile p 
        WHERE p.user_id = :user_id 
        ORDER BY p.createdAt DESC ";

$allProfiles = $em->createQuery($dql)
                  ->setParameter('user_id', $user_id)
                  ->setMaxResults(5)
                  ->getResult();

return $allProfiles;

返回所有个人资料。

如果我使用getSingleResult(),则表示结果不唯一

2 个答案:

答案 0 :(得分:56)

正确的方法是:

$singleProfile = $em->createQuery($dql)
                    ->setParameter('user_id',$user_id)
                    ->getSingleResult();

为防止出现错误,请尝试以下结果:

$singleProfile = $em->createQuery($dql)
                    ->setParameter('user_id',$user_id)
                    ->getOneOrNullResult();

答案 1 :(得分:4)

                $allProfiles = $em->createQuery($dql)
                                ->setParameter('user_id',$user_id)
                                ->setMaxResults(1)
                                ->getResult();
                return $allProfiles[0];