symfony2方法在EntityRepository中未定义

时间:2017-03-29 16:33:57

标签: php symfony

我想从我的EntityRepository创建一个请求,所以这是我的代码:

<?php

namespace zhr\myprojectBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * myprojectdbEntityRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class myprojectdbEntityRepository extends EntityRepository
{
    public function getAll()
    {
        $qb = $this->createQueryBuilder('s');

        $query = $qb;

        $result = $qb->getQuery()->execute();

    }
}

我想在我的控制器文件中使用它,所以这是我的代码:

public function searchusersAction(Request $ request)     {

    $em = $this->getDoctrine()->getManager();
    $repository = $em->getRepository('myprojectBundle:User');


    $utilisateur = $repository->getAll();

   var_dump($utilisateur); die();

    //return $this->render('mypageBundle:Admin:adminindex.html.twig', array('sheet'=>$utilisateur));

}

我收到错误:

未定义的方法&#39; getAll&#39;。方法名称必须以findBy或findOneBy!

开头

??? normaly必须在我的控制器文件中定义存储库文件中的所有方法吗?

首先感谢你们

1 个答案:

答案 0 :(得分:0)

您必须使用getResult()返回结果,如下所示:

public function getAll()
{
    return $this->createQueryBuilder('s')->getQuery()->getResult();
}

但是你真的不需要这种功能,因为EntityRepository类已经有findAll()函数来获取实体的所有行:

$em = $this->getDoctrine()->getManager();
$rows = $em->getRepository('myprojectBundle:User')->findAll();

我建议您查看QueryBuilderEntityRepository api。

的文档