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

use*_*r17 11 php doctrine symfony

我想获取最后一个用户个人资料.但我无法在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;
Run Code Online (Sandbox Code Playgroud)

它返回所有配置文件.

如果我使用getSingleResult()然后它说结果不唯一

Ner*_*juz 58

正确的方法是:

$singleProfile = $em->createQuery($dql)
                    ->setParameter('user_id',$user_id)
                    ->getSingleResult();
Run Code Online (Sandbox Code Playgroud)

为了防止错误,没有结果尝试这个:

$singleProfile = $em->createQuery($dql)
                    ->setParameter('user_id',$user_id)
                    ->getOneOrNullResult();
Run Code Online (Sandbox Code Playgroud)


Car*_*dos 5

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

  • 如果$ allProfiles无效怎么办? (9认同)