2016-08-07 25 views
4

有没有人用symfony3(最后一个版本)面对这个奇怪的问题?symfony findBy/findOneBy

我有以下简单的代码

$repository = $this->getDoctrine() 
        ->getManager() 
        ->getRepository('GeneralRegistrationBundle:Service'); 

$service = $repository->findOneBy(array('name' => 'Registration'),array('name' => 'ASC')); 

    $comment = $service->getComment(); 
    $name = $service->getName(); 

    return new Response('le service is '. $name . ', content is ' . $comment); 

此代码的工作。 我清除缓存和改变findOneBy与findBy:

$service = $repository->findBy(array('name' => 'Registration'),array('name' => 'ASC'),1 ,0); 

然后我有以下错误:

Error: Call to a member function getComment() on array

是任何人有意见或线索?

在此先感谢

+3

你在期待什么? findOne只返回一个对象。查找总是返回一个包含0个或更多对象的数组。 – Cerad

+0

Fuhhhh ....我现在需要去度假....感谢Cerad – user2045003

+0

这个问题解决了吗?如果是这样,请标记或张贴答案并接受答案。 –

回答

9

findBy()返回具有给定条件的对象数组。 如果没有为found.if只有一行满足您的条件,那么您必须添加返回空数组a [0]在最后你这样的$服务:

$service = $repository->findBy(array('name' => 'Registration'),array('name' => 'ASC'),1 ,0)[0]; 

如果没有,你应该循环通过使用foreach或类似的东西找到数组。