Symfony查询结果错误


Symfony query wrong result

我使用symfony中的个人请求是:

public function findByReferenceUser($Reference, $User)
{
    $qb = $this->createQueryBuilder('a')
        ->select('a')
        ->join('a.Reference', 'r')
        ->where('r.id = :refId')
        ->setParameter("refId", $Reference->getId())
        ->join('a.User', 'u')
        ->andWhere('u.id = :userId')
        ->setParameter("userId", $User->getId());
    return $qb->getQuery()->getOneOrNullResult();
}

但是它不能正常工作。我得到3个结果类型是NULL,NULL,布尔值。我用这个来检查:

    $list_article = $RArticle->findByReferenceUser($reference, $panier->getUser());
    foreach ($list_article as $key => $article)
        echo gettype($article);

我的数据库工作,并有正确的信息。最后,这行得通:

    $list_article = $RArticle->findAll();
    foreach ($list_article as $key => $article)
        echo gettype($article);

打印对象,对象。

所以有我的问题:为什么我得到NULL, NULL,布尔值在第一种情况下,我如何修复它?

谢谢你的帮助!:)

当使用getOneOrNullResult时,Doctrine将在这里使用Retrieve a single object. If no object is found null will be returned.

如果你需要多个对象,你应该使用getResult

findAll()返回对象数组,如array('key' => 'object'),这就是为什么你得到正确的记录,getOneOrNullResult()返回单个对象(不是数组,foreach不会工作),如果你想检索多个记录,你需要使用getResult()