Symfony 3 - 名为“getResult”的未定义方法

Esk*_*der 3 symfony

/**
    * Search result information between two dates
    *
*@Route("/search/{startDate}/{endDate}/{type}", name="maintenance_search_result")
    *@Method("GET")
    */
    public function searchResultAction($startDate, $endDate, $type)
    {
      $em = $this->getDoctrine()->getManager()->getRepository('CarMaintenanceBundle:Maintenance');
      $query = $em->createQueryBuilder('c')
        ->select('c.id')
        ->addSelect('c.type')
        ->addSelect('c.date')
        ->addSelect('c.cost')
        ->addSelect('c.remark')
        ->where('c.date > :SDATE')->setParameter('SDATE', $startDate)
        ->andWhere('c.date < :EDATE')->setParameter('EDATE', $endDate);

        if ("All" != $type){
            $query->andWhere('c.type = :TYPE1')->setParameter('TYPE1', $type);
        } 

        $query->orderBy('c.date', 'DESC')
          ->getQuery();

        $SearchRes = $query->getResult();

        return $this->render('maintenance/search_result.html.twig', array(
          'SearchResults'=> $SearchRes,));
}
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

试图调用类“Doctrine\ORM\QueryBuilder”的名为“getResult”的未定义方法。

当我这样写时,没有问题。它显示搜索结果。

public function searchResultAction($startDate, $endDate, $type)
    {
      $em = $this->getDoctrine()->getManager()->getRepository('CarMaintenanceBundle:Maintenance');

        if ("All" != $type){
          $query = $em->createQueryBuilder('c')
            ->select('c.id')
            ->addSelect('c.type')
            ->addSelect('c.date')
            ->addSelect('c.cost')
            ->addSelect('c.remark')
            ->where('c.date > :SDATE')->setParameter('SDATE', $startDate)
            ->andWhere('c.date < :EDATE')->setParameter('EDATE', $endDate)
            ->andWhere('c.type = :TYPE1')->setParameter('TYPE1', $type)
            ->orderBy('c.date', 'DESC')
            ->getQuery();
        } else {
          $query = $em->createQueryBuilder('c')
            ->select('c.id')
            ->addSelect('c.type')
            ->addSelect('c.date')
            ->addSelect('c.cost')
            ->addSelect('c.remark')
            ->where('c.date > :SDATE')->setParameter('SDATE', $startDate)
            ->andWhere('c.date < :EDATE')->setParameter('EDATE', $endDate)
            ->orderBy('c.date', 'DESC')
            ->getQuery();
        }
        $SearchRes = $query->getResult();
        return $this->render('maintenance/search_result.html.twig', array(
          'SearchResults'=> $SearchRes,));
    }
Run Code Online (Sandbox Code Playgroud)

最短的代码有什么问题?

Bar*_*ada 6

您没有分配getQuery()任何地方的结果:

    $query->orderBy('c.date', 'DESC')
      ->getQuery();
Run Code Online (Sandbox Code Playgroud)

这是会做的伎俩:

    $query = $query->orderBy('c.date', 'DESC')
      ->getQuery();
Run Code Online (Sandbox Code Playgroud)