我在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,布尔值以及如何修复它?
感谢您的帮助! :)
答案 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()