Symfony查询错误的结果

时间:2014-07-28 08:13:19

标签: php symfony doctrine

我在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);

我的数据库有效,并且有正确的信息。 Finnaly,这有效:

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

打印对象,对象。

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

感谢您的帮助! :)

2 个答案:

答案 0 :(得分:1)

使用getOneOrNullResult时,Doctrine会Retrieve a single object. If no object is found null will be returned. here

如果您想要多个对象,则应使用getResult

答案 1 :(得分:0)

findAll()返回对象数组,例如array('key' => 'object'),这就是你获得正确记录的原因,getOneOrNullResult()返回单个对象(不是数组,foreach将无效),如果要检索多个记录,则需要使用getResult()