Symfony findOneBy / findBy

问题描述 投票:0回答:3

有人在 Symfony 3(最后一个版本)中遇到过这个奇怪的问题吗?

我有以下简单的代码:

$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);

然后我有以下错误:

错误:调用数组上的成员函数 getComment()

有人有想法或线索吗?

提前致谢。

doctrine symfony
3个回答
26
投票

findBy()
返回具有给定条件的对象数组。

如果没有找到,它返回一个空数组。如果只有一行满足您的条件,那么您可以在

[0]
的最后添加一个
$service
,如下所示:

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

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


3
投票

如果您想要并期望一个结果,您可以使用

findOneBy()
功能。

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

0
投票
public function index(AnnouncementRepository $announcementRepository, LessonRepository $lessonRepository): Response
    {
        $announcement = $announcementRepository ->findBy([
            'role' => $this -> getUser() ->getRoles()[0]],['date' => 'ASC']);

        $lessons = $lessonRepository ->findBy([
            'student' => $this->getUser()
        ]);

        return $this->render('student/index.html.twig', [
         'announcement' => $announcement [0],
            'lessons' => $lessons
        ]);
© www.soinside.com 2019 - 2024. All rights reserved.