【问题标题】:Symfony 3 - undefined method named "getResult"Symfony 3 - 名为“getResult”的未定义方法
【发布时间】:2016-11-28 14:38:48
【问题描述】:
/**
    * 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,));
}

我有以下错误:

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

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

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,));
    }

最短的代码有什么问题?

【问题讨论】:

  • 提示:queryBuilder 对象与查询对象不同。考虑从 queryBuilder = $em->createQueryBuilder('c') 开始,看看会发生什么。

标签: symfony


【解决方案1】:

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

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

这会成功的:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2019-04-20
    相关资源
    最近更新 更多