【问题标题】:Doctrine ORM : Undefined offset 2教义 ORM:未定义的偏移量 2
【发布时间】:2019-08-19 13:45:19
【问题描述】:

我正在处理从数据库中获取一些结果的请求,但我遇到了一个错误,我不知道如何解决它

在我的存储库中:

public function findBySearchField($salary, $contract, $experience, $training)
{
    return $this->createQueryBuilder('a')
        ->andWhere('a.salary = :sal')
            ->setParameter('sal', $salary)
        ->andWhere('a.contract = :con')
            ->setParameter('con', $contract)
        ->andWhere('a.experience = :exp')
            ->setParameter('exp', $experience)
        ->andWhere('a.training = :tra')
            ->setParameter('tra', $training)
        ->orderBy('a.postedAt', 'DESC')
        ->getQuery()
        ->getResult()
        ;
}

在我的控制器中:

public function index(Request $request, AdvertRepository $advertRepository): Response
{
    $form = $this->createForm(ResearchType::class);
    $form->handleRequest($request);

    if ($request->getMethod() == 'POST') {
        $salary = $form->get('salary')->getData();
        $contract = $form->get('contract')->getData();
        $experience = $form->get('experience')->getData();
        $training = $form->get('training')->getData();

        return $this->render('advert/index.html.twig', [
            'form' => $form->createView(),
            'adverts' => $advertRepository->findBySearchField(
                ['salary' => $salary],
                ['contract' => $contract],
                ['experience' => $experience],
                ['training' => $training]
            ),
        ]);
    }

    return $this->render('advert/index.html.twig', [
        'form' => $form->createView(),
        'adverts' => $advertRepository->findAll(),
    ]);
}

我有一个错误“注意:未定义的偏移量:2”

但是,当我在 phpMyAdmin 中提出此请求时,它会返回我正在寻找的内容

【问题讨论】:

  • 嗨 Romain,我没有看到任何问题,您的查看文件怎么样
  • "注意:未定义的偏移量:2" 什么文件和什么行?显示该行。
  • 嗨!我找到了解决方案:

标签: php doctrine-query


【解决方案1】:

感谢您的反馈, 我找到了解决方案,在我的方法 findBySearchField 中,我给出了数组而不是变量。 此解决方案有效:

    public function index(Request $request, AdvertRepository $advertRepository): Response
    {
        $form = $this->createForm(ResearchType::class);
        $form->handleRequest($request);

        if ($request->getMethod() == 'POST') {
            return $this->render('advert/index.html.twig', [
                'form' => $form->createView(),
                'adverts' => $advertRepository->findBySearchField(
                    $salary     = $form->get('salary')->getData(),
                    $contract   = $form->get('contract')->getData(),
                    $experience = $form->get('experience')->getData(),
                    $training   = $form->get('training')->getData()
                ),
            ]);
        }

        return $this->render('advert/index.html.twig', [
            'form' => $form->createView(),
            'adverts' => $advertRepository->findAll(),
        ]);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 2014-01-08
    • 2013-08-18
    • 2011-03-13
    • 2018-10-20
    • 1970-01-01
    相关资源
    最近更新 更多